Z Shell
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 <TAB> » 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
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
.
- .zshrc
# _________ _ _ ____ ____ # |__ / ___|| | | | _ \ / ___| # / /\___ \| |_| | |_) | | # _ / /_ ___) | _ | _ <| |___ #(_)____|____/|_| |_|_| \_\\____| # # Plugins # plugins=(git github common-aliases dirhistory sudo nmap web-search python pip urltools copyfile encode64 history colored-man-pages) #
- fichier.zsh
# # _ ____ _ _ # __| |___ \ __ _(_)_ __ _______| |__ # / _` | __) / _` | | '__|_ / __| '_ \ # | (_| |/ __/ (_| | | | _ / /\__ \ | | | # \__,_|_____\__,_|_|_|(_)___|___/_| |_| # # 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
.