====== Z Shell ====== Configuration de [[wpfr>ZSH]], changement en shell par défaut, et ajout du framework [[https://ohmyz.sh/|Oh-My-Zsh]]. ===== Fonctionnalités ===== Zsh apporte les fonctionnalités suivantes : * complétion des commandes, des options et des arguments de la plupart des commandes. En particulier, taper la suite de caractères « cd » ne permettra la complétion que par des répertoires ; * des fonctions de "Globbing" ou "Expansion" très avancées ; * partage de l'historique des commandes entre tous les shells zsh actuellement actifs ; * utilisation améliorée des variables et des tableaux ; * édition des commandes multi-lignes dans un seul buffer ; * correction « orthographique » des commandes tapées ; * plusieurs modes de compatibilité (zsh peut par exemple être vu comme un shell bourne quand il est exécuté en tant que /bin/sh) ; * invite de commande personnalisable, avec la possibilité d'afficher des informations sur le côté droit de l'écran qui disparaissent si la commande tapée est trop longue. ===== Installation de Z Shell ===== ==== Installation des paquets ==== sudo apt update && sudo apt install zsh ==== Changer le shell par défaut ==== chsh Mot de passe : Changement d'interpréteur de commandes initial pour d2air Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée Interpréteur de commandes initial [/bin/bash]: /bin/zsh ===== Oh my zsh ===== [[http://ohmyz.sh/|Oh-My-Zsh]] est un framework communautaire open source pour gérer une configuration ZSH. Il est livré avec une tonne de fonctions utiles, des aides, des plugins et des thèmes. git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc ==== Configuration .zshrc ==== Le nouveau fichier ''~/.zschrc'' peut être édité pour personnaliser la configuration, mais il existe un dossier ''~/.oh-my-zsh/custom'' afin d'ajouter un (ou plusieurs) fichier de configurations ''fichier.zsh'' qui écrasera les paramètres par défaut et ne sera pas modifié par les mises à jour. Cependant les plugins doivent absolument se déclarer dans le fichier ''.zshrc'' juste avant le paramètre source ''$ZSH/oh-my-zsh.sh''. # _________ _ _ ____ ____ # |__ / ___|| | | | _ \ / ___| # / /\___ \| |_| | |_) | | # _ / /_ ___) | _ | _ <| |___ #(_)____|____/|_| |_|_| \_\\____| # # Plugins # plugins=(git github common-aliases dirhistory sudo nmap web-search python pip urltools copyfile encode64 history colored-man-pages) # # # _ ____ _ _ # __| |___ \ __ _(_)_ __ _______| |__ # / _` | __) / _` | | '__|_ / __| '_ \ # | (_| |/ __/ (_| | | | _ / /\__ \ | | | # \__,_|_____\__,_|_|_|(_)___|___/_| |_| # # bindkey "${key[Up]}" up-line-or-history bindkey "${key[Down]}" down-line-or-history bindkey "${key[PageUp]}" history-beginning-search-backward bindkey "${key[PageDown]}" history-beginning-search-forward # # Alias # alias cdiff='colordiff -u' alias cdir='dir --color=always' alias weather="curl http://wttr.in/paris" alias meteo="curl http://wttr.in/paris" alias meteoparis="curl http://wttr.in/paris" alias code="< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32" alias code8="apg -a 0 -M sncl -n 4 -x 8 -m 8" alias code16="apg -a 0 -M sncl -n 6 -x 16 -m 16" alias code32="apg -a 0 -M sncl -n 8 -x 32 -m 32" alias aptup="sudo apt update && sudo apt upgrade && sudo apt dist-upgrade && sudo rkhunter --propupd" # # Functions # transfer() { if [ $# -eq 0 ]; then echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; } # # Banner # whoami | figlet -f smslant ippub=`curl -s http://checkip.amazonaws.com/` iplan=`ip route get 8.8.8.8 | awk -F"src " 'NR==1{split($2,a," ");print a[1]}'` echo "Adresse IP $ippub ($iplan)" unset ippub iplan if [ ${#plugins[@]} -gt 1 ]; then echo "${#plugins[@]} plugins oh-my-zsh sont activés."; elif [ ${#plugins[@]} -eq 1 ]; then echo "Le plugin \e[1m${plugins[1]} \e[0md'oh-my-zsh est activé."; else echo "Aucun plugin oh-my-zsh ne fut activé"; fi nb_alias=`alias | wc -l` if [ $nb_alias -gt 1 ]; then echo "$nb_alias alias sont définis."; elif [ $nb_alias -eq 1 ]; then echo "Un alias est défini."; else echo "Aucun alias n'est défini"; fi unset nb_alias echo "L'entropie est de $(cat /proc/sys/kernel/random/entropy_avail)/$(cat /proc/sys/kernel/random/poolsize)" ==== Thèmes ==== Il possible de modifier un thème en le copiant ou d'en créer un dans le dossier ''~/.oh-my-zsh/custom/themes''.