67 votes

Caractéristiques uniques de bash par rapport à zsh

Je suis un utilisateur de zsh depuis un certain temps (avant cela tcsh et avant cela csh). J'en suis assez satisfait, mais je me demandais s'il y avait des fonctionnalités incontournables de bash qui n'existent pas dans zsh. Et inversement, y a-t-il des fonctionnalités de zsh qui n'existent pas dans bash ? Mon sentiment actuel est que bash est meilleur :

  • Si vous le connaissez déjà et que vous ne voulez pas apprendre une nouvelle syntaxe.
  • Il va exister par défaut sur la plupart des machines *nix, alors que zsh peut être une installation supplémentaire.

Je n'essaie pas de lancer une bataille religieuse ici, c'est pourquoi je cherche simplement des fonctionnalités qui n'existent que dans l'une des coquilles.

41voto

0x89 Points 6095

Zsh est pour les vulcains ;-)

Sérieusement : bash 4.0 possède des fonctionnalités que l'on ne trouvait auparavant que dans zsh, comme ** globbing :

% ls /usr/src/**/Makefile

est équivalent à :

% find /usr/src -name "Makefile"

mais évidemment plus puissant.

D'après mon expérience, la complétion programmable de bash est un peu plus performante que celle de zsh, au moins pour certains cas (compléter les paquets debian pour aptitude par exemple).

bash a Alt + . pour insérer !$

zsh has expansion of all variables, so you can use e.g.

``

% rm !$<Tab>

for this. zsh can also expand a command in backtics, so

% cat `echo blubb | sed 's/u/a/'`<Tab>

yields

% cat blabb

I find it very useful to expand rm *, as you can see what would be removed and can maybe remove one or two files from the commmand to prevent them from being deleted.

Also nice: using the output from commands for other commands that do not read from stdin but expect a filename:

% diff <(sort foo) <(sort bar)

From what I read bash-completion also supports completing remote filenames over ssh if you use ssh-agent, which used to be a good reason to switch to zsh.

Aliases in zsh can be defined to work on the whole line instead of just at the beginning:

``

% alias -g ...="../.."
% cd ...

18voto

X-Istence Points 752

Je voudrais souligner que bash n'est pas installé par défaut sur FreeBSD, OpenBSD, ou NetBSD, et il n'est pas non plus installé par défaut sur Solaris 10 (OpenSolaris l'a par défaut), la dernière fois que j'ai utilisé un serveur AIX, et ou HP-UX il n'était pas installé par défaut non plus.

De plus, sur OpenSolaris, /bin/sh n'est PAS bash. C'est ksh. Les plus gros problèmes que j'ai en tant que porteur de logiciels sont les gens qui supposent que /bin/sh est bash et qu'il acceptera la syntaxe étendue de bash. Bien que cela semble être le cas sur la plupart des distributions Linux, ce n'est pas le cas ailleurs et c'est vraiment ennuyeux.

12voto

Chucky Points 221

Bien que je sois un utilisateur de bash, je trouve une des fonctionnalités de zsh plutôt cool : RPS1.

Rappelez-vous :

  • PS1 : l'invite alignée à gauche
  • RPS1 : le prompteur bien aligné

Un échantillon :

Lorsque vous utilisez quelque chose comme

PS1=’%B(%h) %m%#%b ‘
RPS1=’(%20<…<%~)'

Vous obtenez votre invite sur la gauche et le répertoire actuel poussé sur la droite. Il disparaît même lorsque la ligne courante devient trop longue ! C'est parce que zsh est assez intelligent pour donner une faible priorité à RPS1.

Vous pouvez voir une capture d'écran de cet exemple à l'adresse suivante http://imgur.com/OAZhC .

9voto

Magus Points 911

Zsh a une correction orthographique. Si vous vous trompez d'une lettre (ou plus), il trouvera ce que vous voulez dire.

Il dispose également d'un système de complétion d'onglets plus robuste, ce que j'apprécie.

Zsh dispose d'un utilitaire de configuration interactif pour le configurer comme vous le souhaitez.

Certains tests de vitesse disent que zsh est plus rapide, mais je n'ai pas remarqué de différence.

6voto

Soldarnal Points 2646

Je ne connais pas de fonctionnalités de bash que zsh ne supporte pas. L'objectif de conception de zsh semble inclure le support de toutes les fonctionnalités que bash ajoute.

J'utilise toujours bash au lieu de zsh. Je ne rencontre que rarement des fonctionnalités convaincantes que zsh supporte et que bash ne supporte pas. Des problèmes occasionnels avec zsh au fil des ans, ou le fait qu'il n'existe pas sur certains systèmes, ont fait que cela ne valait pas la peine de faire la transition.

Je peux enfin utiliser le même Shell sur tous les systèmes Unix, ça ne vaut pas la peine de casser ça pour des fonctionnalités que je n'utiliserai jamais.

Les fonctionnalités présentes dans zsh qui ne sont pas présentes dans bash semblent être pour la plupart mignonnes mais pas celles qui auraient de l'importance au jour le jour.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X