Salut à tous, aujourd’hui j’en ai eu ma claque de mon shell bash par défaut dans debian. Je veux dire quand on s’est habitué à Powershell pendant quelques années revenir au mode texte brut c’est dur. Du coup j’ai cherché un shell un peu plus conviviale pour linux, et après 2 minutes sur Google , il semble que ZSH soit la référence actuel, d’où ce TP : « Installer et configurer zsh sur debian 8 ».
ZSH ? mais il a quoi de mieux que mon bon vieux bash ?
- Complétion des commandes
- Partage de l’historique des commandes entre tous les shells zsh
- Personnalisable
- Utilisation améliorée des variables
- Complétion interactives des commandes à la saisie
La liste en détail sur wikipédia. Mais pour faire simple
Essayer ce truc c’est l’adopter…
Et comme un bon TP vaut mieux qu’un long discours, on y va.
Installation
Toujours très complexe sous debian :
apt-get install zsh
C’est fait.
Pour lancer le shell, taper dans votre interface en ligne de commande actuelle :
zsh
Si vous souhaitez utiliser zsh en Shell par défaut :
chsh #et saisir /bin/zsh
Configuration
De base ZSH n’est pas beaucoup plus convivial que bash, même si on sent bien qu’il en a sous le capot, il faut activer les modules et configurer la bête pour vraiment l’exploiter à fond. Le fichier de configuration de zsh pour le système se trouve dans :
/etc/zsh/zshrc
Ensuite chaque utilisateur peut configurer son shell dans :
vim ~/.zshrc
Donc on va ajouter quelques fonctionnalités dans notre config :
#Autocomplétion
############################# #avancée : autoload -U compinit compinit #ou support bash classique #autoload -U bashcompinit #bashcompinit #auto-correction setopt correctall
#Thème du prompts
Charger les prompts par défaut :
autoload -U promptinit promptinit
ensuite pour lister les prompts disponibles :
prompt -l prompt -p #pour afficher un aperçu
et pour choisir le votre :
prompt <THEME> [OPTION(S)]
Exemple, j’en ai mis un volontairement kitsch mais vous en trouverez plein à vos goûts sur le net (et sinon faites le votre vous même) :
> prompt elite2 green yellow ┌┌(user@computer)┌(12/pts/0)┌(03:12:03/24/16)┌- └┌(%:~)┌-
#Alias
#Définition de vos alias préférés alias la="ls -a" alias ll="ls -l"
#Et plus si affinités
Déjà vous devriez commencer à avoir un prompt sympa. Pour ceux à qui ça ne suffit pas, quelques pointeurs vers de la doc supplémentaire :
https://doc.ubuntu-fr.org/zsh
https://wiki.archlinux.org/index.php/zsh
Fonctionnalités sympa de ZSH
Globbing
Un exemple qui déchire : comment trouver tous les fichiers « .conf » sur le système :
ls **/*conf*
Et rien que ça c’est trop bien.
Man :
Taper une commande type pwd et faites « <Echap>-h » -> : le manuel s’affiche en interactif.
Auto-complétion de commande avec l’aide :
Exemple Saisir « nmap – » et appuyer sur tabulation :
nmap - Completing option --append_output -- append results to any log files --data_length -- add random data to packets [...]
en fait vous pouvez presque tout tabuler : zsh pioche dans les man, votre historique, les fichiers de conf ou les infos système (hosts par exemple) pour vous proposer des paramètres pertinents.
Personnaliser le à votre sauce :
ZSH est personnalisable presque autant que vous voulez (à partir du moment ou vous êtes prêt à vous pencher un peu dessus) : donc démerdez vous à partir de là !
Oh-My…ZSH
Bon et pour ceux à qui ça ne suffit toujours pas, il existe un framework sous acide pour ZSH : Oh-My-ZSH… qui permet d’ajouter encore une volée de plugins et de thèmes. Il suffit d’installer oh-my-ZSH (attention ça écrase la conf réalisé jusqu’ici et la sauvegarde), comme ça :
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Attention : Pour certains thèmes dans oh-my ZSH il vous faudra les powerline-font, ça se passe bien sous linux mais si vous vous connectez au travers de PuTTY ça peut devenir un vite galère à configurer correctement avec les fonts Windows.
Pour ma part j’aime bien le thème « ys » dans oh-my-zsh.
Problèmes divers avec oh-my-zsh ou ZSH
Avant de finir, je vous donne ici quelques astuces de config pour des souçis de touche pas reconnues après les passage à zsh :
autoload -U compinit
compinit
#ou support bash classique
#autoload -U bashcompinit
#bashcompinit
autoload -U promptinit
promptinit
prompt walters
#auto-correction
setopt correctall
alias la="ls -a"
alias ll="ls -l"
alias l='ls -CF'
alias python='/usr/bin/python3'
# Si vous avez Perdu le pavé numérique (Keypad)
# Pour trouver les key-code spécifique à votre système, taper "Ctrl-v" puis faites votre combinaison de touche
# exemple pour le zéro ci dessous :
# bindkey -s "<Ctrl-V> puis <0-numpad>" "0"
# 0-9 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[On" "."
bindkey -s "^[OM" "^M"
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + - * /
bindkey -s "^[Ol" "+"
bindkey -s "^[OS" "-"
bindkey -s "^[OR" "*"
bindkey -s "^[OQ" "/"
# Si vous avez Perdu les touches début et fin
bindkey '^[[1~' beginning-of-line
bindkey '^[[4~' end-of-line
# Ctrl-Gauche/Droite
bindkey '^[[C' forward-word
bindkey '^[[D' backward-word
Conclusion
On va faire simple : ZSH ça arrache, et vous pourrez vous la péter devant vos potes linuxien après l’avoir installé et configuré correctement.