OVH Cloud OVH Cloud

choix du shell

60 réponses
Avatar
Sebastien Kirche
Bonjour,

(je suis conscient que ça va frôler le troll, alors on va tâcher de rester
calmes pour ne pas le réveiller :)

Voilà un moment que je m'investis de façon grandissante dans Unix (Linux,
OSX ou QNX) et je m'interroge sur le choix du shell sur un système.

J'ai l'habitude principalement de bash sous Linux, et dans une moindre
mesure [t]csh sur Mac/qnx. Parce que ce sont les shells par défaut
certainement.

À la lecture (périodique) de ce groupe il me semble que souvent zsh est
cité comme meilleure alternative au bash.
En dehors de (simples) considération de goût, est-ce que zsh est
préférable ?

Je crois me rappeler avoir vu ici-même des remarques sur le fait que
développement de bash était plutôt gelé ? Est-ce qu'alors zsh c'est
l'avenir ?

Comme je le disais, je me considère encore en phase d'apprentissage, aussi
vaut-il mieux pour moi investir du temps sur zsh ?

Existe-t-il de la littérature à conseiller sur zsh à la manière du guide
Advanced Bash Scripting ?

Merci de vos avis, dans la limite du raisonnable :)

Sébastien Kirche

10 réponses

1 2 3 4 5
Avatar
Emmanuel Florac
Le Wed, 07 Jul 2004 13:20:51 +0000, Stephane Chazelas a écrit :

Les utilisateurs de bash sont en
gros ceux qui n'ont pas essayé zsh ou qui n'utilisent pas de shells
couremment


J'utilise le shell courrament, mais je suis habitué à la syntaxe de sh
pour écrire les scripts autant que possible (question de portabilité),
quant à la ligne de commande, que ce soit tcsh, bash, ksh ou zsh je ne
vois pas bien quelle différence ça fait à l'usage. Et oui, en ligne de
commande je préfère taper

for i in *; do mv $i `basename $i toto`tata; done

parce qu'au moins c'est clair et lisible.

--
Dix grammes d'abstraction valent des tonnes de bricolage.
Loi de Booker.

Avatar
Emmanuel Florac
Le Wed, 07 Jul 2004 14:24:21 +0000, Stephane Chazelas a écrit :


www.zsh.org
Sur le site de tcsh, on te dira aussi d'utiliser zsh.


Comme c'est un WIki, c'est peut-être bien toi qui l'a mis :)

--
on passe la moitié de son temps à refaire ce que l'on n'a pas eu le
temps de faire correctement.
Loi de Myers.

Avatar
Vincent Lefevre
Dans l'article ,
Sebastien Kirche écrit:

Donc (en gros) je peux basculer sur zsh tranquille, ce qui
fonctionnait en bash fonctionne toujours, et il n'y a que des
avantages à faire le changement ?


Quasiment.

Pas d'inconvénient connu ?


Seul gros inconvénient: zsh ne supporte pas encore UTF-8. Mais je
crois que les développeurs y travaillent ou vont le faire.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% validated (X)HTML - Acorn / RISC OS / ARM, free software, YP17,
Championnat International des Jeux Mathématiques et Logiques, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Stephane Chazelas
2004-07-7, 20:11(+00), :
[...]
Vouais, mais le fait de parcourir son domaine bien
assis sur son bash comme un paysan dans sa vieille
4L a sans doute l'avantage d'entretenir les
réflexes de survie en milieu hostile, ce qui peut
faciliter la vie en cas de gros pépin.

C'est marginal, mais ça se plaide.
[...]


Personnellement, je ne vois pas le rapport.
En milieu hostile, il n'y a pas plus de bash que de zsh.

En cas de gros pepin, ce n'est pas vraiment l'aptitude a
maitriser toutes les options de tel ou tel shell qui va faire
la plus grosse difference.

(Par contre, note qu'en cas de gros pepin, un zsh compilé
statiquement avec les bons modules permet de se sortir de la
plupart des situations puisqu'il permet de se passer des outils
de bases Unix (ftp, telnet, mv, vi, ls...), voir les modules
"files", "mapfile", "zftp", "tcp").

--
Stephane

Avatar
Nicolas Le Scouarnec
Donc (en gros) je peux basculer sur zsh tranquille, ce qui fonctionnait en
bash fonctionne toujours, et il n'y a que des avantages à faire le
changement ?
Pas d'inconvénient connu ?


Non, les plus gros avantages a mon gout, enfin ceux que tu remarques en
premier, ce sont la meilleure gestion de l'historique et la complétition
largement plus poussée. Par exemple, ca peut completer pour des pages
de manuel quand tu tapes: man zs[tab].

Le Zsh User Guide est très bien et très complet justement.

--
Nicolas Le Scouarnec

Avatar
Emmanuel Florac
Le Thu, 08 Jul 2004 22:45:25 +0000, Nicolas Le Scouarnec a écrit :

Par exemple, ca peut completer pour des pages
de manuel quand tu tapes: man zs[tab].


bash aussi. En fait avec bash on peut étendre facilement la complétion
pour diverses applications. Ça complète aussi comme ça :

apt-get i<tab> -> apt-get install mo<tab> -> apt-get install mozilla

Par exemple. L'architecture qui permet ça est inélégante, mais efficace.

--
De longs désirs, une longue admiration sans espérance, voilà le moyen
d'adorer les femmes, et de rendre l'amour une passion délicieuse!
N. Rétif de la Bretonne.

Avatar
Laurent
On 2004-07-09, Emmanuel Florac wrote:
Le Thu, 08 Jul 2004 22:45:25 +0000, Nicolas Le Scouarnec a écrit :

Par exemple, ca peut completer pour des pages
de manuel quand tu tapes: man zs[tab].


bash aussi. En fait avec bash on peut étendre facilement la complétion
pour diverses applications. Ça complète aussi comme ça :

apt-get i<tab> -> apt-get install mo<tab> -> apt-get install mozilla

Par exemple. L'architecture qui permet ça est inélégante, mais efficace.

Oui l'intérêt du zsh, entre autre, c'est que cette completion


est déjà écrite pour toi. Autre gros avantage de la
completion: elle complete à distance (TCP) si tu fais cvs co
<TAB> ; tu as tous les répertoires distants qui apparaîssent !

Laurent



Avatar
Emmanuel Florac
Le Fri, 09 Jul 2004 08:24:00 +0000, Laurent a écrit :

Oui l'intérêt du zsh, entre autre, c'est que cette completion
est déjà écrite pour toi.
Autre gros avantage de la
completion: elle complete à distance (TCP) si tu fais cvs co
<TAB> ; tu as tous les répertoires distants qui apparaîssent !


Mais c'est pareil sous bash :

%mount -t nfs toto:/ho<tab> -> les partages nfs apparaissent. Pour cvs je
n'ai pas essayé mai je suppose que c'est pareil.
Sincèrement, je pense qu'en usage interactif l'utilisation de l'un ou
l'autre est vraiment quasi identique.

--
A thing of beauty is a joy forever.
J. Keats.

Ah! Singe débotté, hisse un jouet fort et vert!
Marcel Bénabou.

Avatar
Stephane Chazelas
2004-07-09, 08:24(+00), Laurent:
[...]
Oui l'intérêt du zsh, entre autre, c'est que cette completion
est déjà écrite pour toi. Autre gros avantage de la
completion: elle complete à distance (TCP) si tu fais cvs co
<TAB> ; tu as tous les répertoires distants qui apparaîssent !
[...]


Faut voir aussi que le <Tab> de zsh, fait (peut faire, ca se
configure) bien plus que de la completion, il permet aussi de
faire des l'expansion, de l'approximation, d'afficher les
completions de differentes manieres avec des descriptions, avec
des en-tetes pour lister les differents types de completions...
de faire de la completion sur l'historique sur la dirstack, voir
aussi sa gestion de caches, comment il gere le quoting, les
imbrications de commandes...

La completion de bash est inspiree de celle de plusieurs
generations d'avant (d'il y a 10 ans) de zsh (2.6?) elle-meme
inspiree de tcsh.

Il suffit de faire le compinstall dans zsh et de se balader dans
les menus pour voir jusqu'ou ca peut aller.

Le probleme de la completion de zsh, c'est que meme si elle est
configurable a tous les niveaux, au niveau les plus bas, c'est
vraiment trop complexe pour que ce soit rentable d'y investir du
temps pour comprendre (en gros, s'il n'y a pas de completion
deja definie pour une commande, ben tant pis, ou alors il faut
se contenter du "compctl" (l'ancien systeme de completion qui
reste comprehensible a moindre frais)).

--
Stephane

Avatar
Stephane Chazelas
2004-07-09, 12:38(+02), Emmanuel Florac:
Le Fri, 09 Jul 2004 08:24:00 +0000, Laurent a écrit :

Oui l'intérêt du zsh, entre autre, c'est que cette completion
est déjà écrite pour toi.
Autre gros avantage de la
completion: elle complete à distance (TCP) si tu fais cvs co
<TAB> ; tu as tous les répertoires distants qui apparaîssent !


Mais c'est pareil sous bash :

%mount -t nfs toto:/ho<tab> -> les partages nfs apparaissent. Pour cvs je
n'ai pas essayé mai je suppose que c'est pareil.
Sincèrement, je pense qu'en usage interactif l'utilisation de l'un ou
l'autre est vraiment quasi identique.


Tu dois vouloir parler de l'extension bash_completion
http://www.caliban.org/bash/#completion

A lire dans le README ;) :

Q. Is bash the be-all-and-end-all of completion as far as shells go?

A. Absolutely not. zsh has an extremely sophisticated completion system
that offers many features absent from the bash implementation. More
information can be found at:

http://www.zsh.org/

--
Stephane


1 2 3 4 5