Cela vaut la peine de passer à zsh pour un usage occasionnel?

Le shell par défaut de Mac OS X est bash , que je suis généralement content d’utiliser. Je viens de le prendre pour acquis. Ce serait vraiment bien si elle remplissait automatiquement plus de choses , et j’ai entendu de bonnes choses à propos de zsh à cet égard. Mais je ne suis pas vraiment enclin à passer des heures à bidouiller les parameters pour améliorer mon utilisation de la ligne de commande, car ma vie sur la ligne de commande n’est pas si mauvaise.

(Si je comprends bien, bash peut également être configuré pour s’auto-compléter plus intelligemment. C’est la configuration dont je ne suis pas très intéressé.)

Le passage à zsh , même dans un petit nombre de cas, facilitera-t-il ma vie? Ou est-ce seulement une meilleure coquille si vous mettez le temps d’apprendre pourquoi c’est mieux? (Les exemples seraient bien aussi :) )


@ Rodney Amato & @ Vulcan Désireux de donner deux bonnes raisons de coller respectivement à bash et de passer à zsh . On dirait que je vais devoir enquêter à la fois! Oh bien :)

Y a-t-il quelqu’un avec une opinion des deux côtés de l’argument?

Pour un usage occasionnel, vous feriez probablement mieux de vous en tenir à bash et d’installer simplement l’achèvement de bash.

L’installer est assez facile, prenez le bash-completion-20060301.tar.gz de http://www.caliban.org/bash/index.shtml#completion et extrayez-le avec

 tar -xzvf bash-completion-20060301.tar.gz 

puis copiez le fichier bash_completion / bash_completion dans / etc avec

 sudo cp bash_completion/bash_completion /etc 

qui vous demandera votre mot de passe. Vous voudrez probablement créer un répertoire /etc/bash_completion.d pour tous les scripts d’achèvement supplémentaires (par exemple, le script d’achèvement git est inclus).

Une fois cela fait, la dernière étape consiste à vous assurer que le fichier .bash_profile de votre répertoire

 if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi 

dedans pour charger le fichier d’achèvement lorsque vous vous connectez.

Pour le tester, ouvrez simplement un nouveau terminal et essayez de compléter cvs. Il vous montrera les options cvs dans la liste des complétions.

Personnellement, j’adore zsh.

En règle générale, vous ne remarquerez probablement pas la différence entre cela et bash, jusqu’à ce que vous vouliez faire rapidement des choses comme la globalisation récursive:

  • **/*.c par exemple.

Ou utilisez des alias de suffixe pour associer des progs spécifiques avec différents suffixes, de manière à pouvoir les “exécuter” directement. L’alias ci-dessous vous permet d’exécuter un fichier source C à l’invite en tapant simplement ./my_program.c – qui fonctionnera exactement comme si vous aviez tapé vim ./my_program.c . (Sorte de l’équivalent de double-cliquer sur l’icône d’un fichier.)

  • alias -sc=vim

Ou imprimez les noms des fichiers modifiés aujourd’hui:

  • print *(e:age today now:)

Vous pouvez probablement faire toutes ces choses dans bash, mais mon expérience avec zsh est que s’il y a quelque chose que je veux faire, je peux probablement le trouver dans zsh-lovers . Je trouve également que le livre ” From Bash to Z-Shell ” est vraiment utile.

Jouer avec l’esprit un grand nombre d’options est très amusant aussi!

Passez à zsh. Vous aurez access à:

  1. zmv : Vous pouvez faire: zmv '(*).mp3' '$1.wma' pour des milliers de fichiers.
  2. zcalc : zcalc extrêmement confortable, mieux que bc .
  3. zparseopts : une ligne pour parsingr des options complexes arbitraires données à votre script.
  4. autopushd : Vous pouvez toujours faire popd après cd pour revenir à votre répertoire précédent.
  5. Support en virgule flottante. Il est nécessaire de temps en temps.
  6. Support Hash. Parfois, ils ne sont qu’un élément clé.

Si tout ce que vous voulez utiliser pour ZSH est un meilleur achèvement, la configuration est assez simple. Placez ceci dans votre ~ / .zshrc:

 autoload -U zutil # [1] autoload -U compinit # [2] autoload -U complist # [3] compinit 

Cependant, il convient de vérifier toutes les autres fonctionnalités du ZSH. L’exemple ci-dessus vous donnera une invite assez claire avec un bon achèvement. Si vous ne voulez pas jouer avec les configurations, mais que vous voulez voir ce que ZSH peut faire pour vous, Google pour “zshrc” et vous aurez des configurations prêtes à l’emploi pour commencer.

zsh a une configuration de l’interface graphique de la console. Vous pouvez le configurer rapidement et facilement sans avoir à manipuler les fichiers de configuration. Je ne pense pas que vous aurez besoin de beaucoup de temps pour le configurer, probablement 10 secondes en utilisant simplement les parameters par défaut, alors allez-y et essayez-le.

Staale parle d’un programme similaire à un assistant (CUI) qui lance automatiquement la première exécution de zsh. Répondez simplement à certaines questions, consultez / modifiez les parameters par défaut et sa configuration pour vous.

IBM developerWorks dispose d’excellentes ressources sur zsh.

Je n’ai pas utilisé de fonctionnalités très avancées et jusqu’à présent, je n’ai pas rencontré de différences sérieuses qui pourraient gêner quelqu’un venant de bash.

Quelques exemples:

  • !? pattern se complétera automatiquement jusqu’à la dernière commande du motif de correspondance d’historique. Très utile.

  • Vous pouvez configurer une invite sur le RHS. Une utilisation consiste à garder une invite de largeur fixe sur le côté gauche afin que toutes les commandes s’alignent bien tout en affichant le pwd (ou tout élément de largeur variable) comme invite de droite.

  • Vous pouvez redirect l’entrée de plusieurs fichiers (pour l’essayer encore): cat