Il a changé ma vie
By Chty on Sunday, January 28 2007, 11:15 - Software - Permalink
Oui un shell peut changer une vie, oui zsh a changé ma vie. Bon d'accord, j'exagère un tout petit peu.
Au départ, je me suis mis à l'utiliser, au détriment de bash ou tcsh (shell par défaut à l'école), pour sa complétion assez agréable.
Il y a quelques jours, on m'a fait découvrir quelques fonctionnalités très intéressantes que je ne peux m'empêcher de vous partager.
(Ces exemples de configuration sont à placer dans votre .zshrc)
Tout d'abord, très basique, une fonctionnalité avancée de la complétion, comment ne lister que les répertoires lors d'un cd :
compctl -g '*(-/) .*(-/)' cd
Un peu plus intéressant, la colorisation de la liste des choix possibles lors de la complétion :
zmodload zsh/complist
ZLS_COLORS=$LS_COLORS
Un peu plus surprenant, la complétion par des paramètres définis sur une certaine commande. Je m'explique.
Par exemple vous êtes sur un réseau local avec de nombreuses machines avec chacune un nom attribuée. Vous voulez y connecter régulièrement en ssh. Ne serait-il pas intéressant que lorsque vous tapez $ssh [TAB], il vous propose la liste des machines disponibles ? zsh le fait comme ceci :
machine=(machine1 machine2 machine3 machine4 machine 5)
compctl -k machine ssh
Bien sûr, c'est à adapter à vos besoins; dans compctl il suffit d'abord de mettre le nom de la variable qui contient les choix possibles, suivit de la liste des commandes sur lesquels cela va agir.
Peut-être qu'on pourra retrouver ces mêmes fonctionnalités dans d'autres shells, mais en tout cas elles y sont ici.
Évidemment, ceci représente qu'une infime partie des possibilités de ce shell. Je n'ai pas fini d'avoir des surprises.
Comments
Connais-tu bash-completion ?
disponible sous Debian ou Mandriva, il permet de compléter les attributs des commandes de la meme manière que celle que tu évoques pour ssh.
par exemple, "urpmi xmo[tab]" ira automatiquement chercher les packages dont le nom commence par xmo !
(meme chose avec apt-get in[tab] xmo[tab])
quelques exemples :
/etc/init.d/apache st[tab]
ssh monserveurhabituel[tab]
...
www.caliban.org/bash/