En tant qu'utilisateur Linux, j'ai toujours utilisé bash car c'était la valeur par défaut sur toutes les distributions que j'utilisais. Les personnes utilisant d'autres systèmes Unix tels que BSD semblent utiliser d'autres shells beaucoup plus fréquemment. Afin d'en apprendre un peu plus, j'ai décidé d'essayer zsh.
En tant qu'utilisateur bash :
- Quelles fonctionnalités vais-je manquer ?
- Et à quoi dois-je faire attention ?
Réponse acceptée :
Pour une réponse plus détaillée, lisez https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences-between-bash-and-zsh/361957#361957
Il y a déjà eu pas mal d'activité sur le sujet sur d'autres sites Stack Exchange. Mon expérience du passage de bash à zsh, pour autant que je m'en souvienne (c'était il y a des années²), c'est que je n'ai rien manqué. j'ai beaucoup gagné; voici ce que je pense être les fonctionnalités simples spécifiques à zsh que j'utilise le plus :
-
La fonctionnalité zsh qui me manque le plus lorsque j'utilise occasionnellement bash est autocd :dans zsh, exécuter un répertoire signifie y accéder, à condition d'activer
autocd
option.⁴ -
Une autre fonctionnalité très utile est le globbing fantaisie. Les
hiéroglyphesles caractères sont un peu difficiles à retenir mais extrêmement pratiques (comme dans, il est souvent plus rapide de les rechercher que d'écrire l'équivalentfind
commande). Quelques-uns des exemples les plus simples :
foo*~*.bak
=toutes les correspondances pourfoo*
sauf ceux correspondant à*.bak
foo*(.)
=uniquement les fichiers normaux correspondant àfoo*
foo*(/)
=uniquement les répertoires correspondant àfoo*
foo*([email protected])
=uniquement les liens symboliques pendants correspondant àfoo*
foo*(om[1,10])
=les 10 fichiers les plus récents correspondant àfoo*
foo*(Lm+1)
=uniquement les fichiers de taille> 1 Mo
dir/**/foo*
=foo*
dans le répertoiredir
et tous ses sous-répertoires, récursivement⁴ -
Pour les renommages fantaisistes, le
zmv
intégré peut être pratique. Par exemple, pour copier chaquefile
aufile.bak
:zmv -C '(*)(#q.)' '$1.bak'
-
bash et zsh ont tous deux un système de complétion décent qui doit être activé explicitement (
. /etc/bash_completion
ouautoload -U compinit; compinit
). Zsh est beaucoup plus configurable et généralement plus sophistiqué.
Si vous exécutez zsh sans .zshrc
, il démarre un menu interactif qui vous permet de choisir les options de configuration. (Certaines distributions peuvent désactiver cela ; dans ce cas, exécutez autoload zsh-newuser-install; zsh-newuser-install
.) Je recommande d'activer les options d'historique recommandées, d'activer la complétion ("nouveau style") et d'activer les "options communes du shell", à l'exception de beep
. Plus tard, configurez plus d'options au fur et à mesure que vous les découvrez.
²À l'époque, la complétion programmable était la fonctionnalité phare de zsh, mais bash l'a acquise peu de temps après.
⁴Les fonctionnalités que bash n'a acquises que dans la version 4 (elles n'étaient donc pas largement disponibles au moment de la publication de cette réponse et ne sont pas disponibles sur le bash fourni par le système sur macOS) sont en plus petits caractères.