Journal : ZSH 4.3.4 full unicode

Posté par Bapt (page perso, ) le 02 mai 2007
0
Nouvelle version de développement de ZSH. Comme d'habitude elle est très très stable.
Pour info ZSH est un shell sous licence ZSH (BSD modifiée).
Il reprend la majeure partie des fonctionnalités de Bash, Tcsh, ksh, etc. il permet même de les émuler.

Il peut corriger intelligemment la frapper au fur et à mesure (tab) ou à la fin (vouliez vous dire blablabla (y/n/e))

Il dispose d'une completion programmable très très évoluée permettant par le biais de fonction de completion d'offrir la possibilité de vous proposer toutes les options disponibles pour la majeure partie de vos programmes préférés, mais aussi tous types d'arguments de manières plus ou moins intelligente (tout dépend de la fonction :)). Bash a pomper le système ZSH (\begin{troll}en moins bien\end{troll}) pour faire son bash-completion, ZSH va plus loin en permettant l'utilisation directe des fonctions de completions bash si vous le désirez.

Vous voulez faire de la programmation shell, ZSH propose tout ce que vous voulez pour ne pas avoir à utiliser tout le pack (sed, awk, grep, bc, expr, ...) permettant ainsi de faire des scripts plus légers et plus portable (juste besoin d'avoir zsh sur la plateforme, et pas une versions (GNU, AIX, SUN ou BSD) des outils sed, awk, grep, ... qui n'ont pas toujours la même syntaxe ni les même options.

Besoin de faire de la programmation shell encore plus avancée : zsh dispose de fonctions permettant de manipuler les date (zsh./datetime), de manipulation réseau (zsh/net, zsh/net/tcp, zsh/net/socket), de faire du FTP (zftp), de manipuler les teminaux (zsh/zpty) et beaucoup plus.

Je m'arrête là car on pourrait en dire des tonnes.

Pour revenir à nos moutons zsh La branche de développement 4.3 à pour but principal d'apporter le support de l'unicode à ZSH.

la précédente version 4.3.2 apportait le support de l'unicode uniquement our la partie cli (utilisateur)
Cette nouvelle version (4.3.4) apporte un support de l'unicode quasiment complet.

Comme toutes les versions de ZSH elle apporte aussi les améliorations habituelles au niveau completion (ajout, correction)

http://www.zsh.org

> Lire le journal (32 commentaires, moyenne: 2,9).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Boucle infine...

Posté par Kévin LAPETOULE (page perso, ) le 02/05/2007 à 12:57. (lien). Évalué à 5.

Bash a pomper le système ZSH pour faire son bash-completion

ZSH va plus loin en permettant l'utilisation directe des fonctions de completions bash

Je résume : ZSH permet d'utiliser bash-completion, qui à pompé ZSH, qui permet d'utiliser bash-completion, qui à pompé ZSH...

  • [^]Re: Boucle infine...

    Posté par Bapt (page perso, ) le 02/05/2007 à 13:29. (lien). Évalué à 3.

    non zsh a la completion depuis longtemps, bash depuis peu, mais comme c'est bash, gnu toussa... il y a forcément plus de mecs dessus donc rapidement il y a des fonctions de completions qui existent sous bash-completion qui ne sont pas encore dans zsh, donc zsh à décider de faire une fonction bashcomp qui permet d'utiliser les fonction de completions bash en plus de celle de zsh.

    • [^]Re: Boucle infine...

      Posté par Matthieu C () le 02/05/2007 à 19:46. (lien). Évalué à 2.

      non zsh a la completion depuis longtemps, bash depuis peu,
      Hum :
      http://www.caliban.org/files/bash/Changelog : la completion sous bash existe depuis au moins 2000/08/09.
      Ca fait deja quelque temps.
      Je sais pas depuis combien de temps elle est sous zsh...

      • [^]Re: Boucle infine...

        Posté par Bapt (page perso, ) le 03/05/2007 à 09:06. (lien). Évalué à 2.

        le ne connais pas l'historique exacte de ZSH (ni ou le trouver), mais la slackware 3.3 de juillet 1997 fourni zsh-3.0.3 qui dispose déjà de la completion avancée avec menu interactif pour les options de completions, et plein d'autres fonctions :
        - command name completion
        - filename and path completion
        - hostname completion
        - key binding completion
        - option completion
        - variable name completion
        - user-specified keyword completion
        - anything else you can think of

        selon le release note la 2.5 comportait déjà des améliorations concernant la completion. je ne sais pas de quand date la version 2.5, mais elle est certainement bien plus vieille que ça et elle améliorait la completion.

        Je commence peut être à me faire vieux, mais l'apparition de bash-completion me semblait plus jeune que ça. En même temps, en 2000 c'était pas très utilisable. Ce que je sais c'est que mon zsh de 1998 (date ou je l'ai découvert) faisait déjà la completion à merveille :).

        • [^]Re: Boucle infine...

          Posté par Alex () le 03/05/2007 à 13:03. (lien). Évalué à 2.

          hmmm a mon souvenir (mais je peux bien me tromper), bash-completion est la completion dite 'intelligente', bref un peu plus que juste la completion du path. Et toujours selon mes souvenirs, bash-completion est bien plus récent que zsh

          • [^]Re: Boucle infine...

            Posté par Bapt (page perso, ) le 03/05/2007 à 14:27. (lien). Évalué à 2.

            bash-completion est la completion dite 'intelligente',


            on est bien d'accord, le zsh 3.0.X dont je parle a bien la completion "intelligente", par exemple dans le liste ci dessus :
            - hostname completion (faut aller les cherchés),
            - option completion (pas besoin de dessin),
            - anything else you can think of (donc intelligente et programmable)

      • [^]Re: Boucle infine...

        Posté par Obi MO (page perso, ) le 03/05/2007 à 09:18. (lien). Évalué à 1.

        Plus longtemps, je m'en servais déjà en 96 parce que bash ne l'avait pas ... (installé par défaut sur toutes les machines linux de mon école)

Une dépêche !

Posté par Étienne Bersac (Jabber id, page perso, ) le 02/05/2007 à 13:27. (lien). Évalué à 3.

Ça vaut une dépêche ! À quand zsh dans les distros ? Peux-tu expliquer un peu la licence ZSH par rapport à BSD et GPL ?

Étienne.

--
E Ultreïa !
  • [^]Re: Une dépêche !

    Posté par Jérôme Pinot (page perso, ) le 02/05/2007 à 13:42. (lien). Évalué à 1.

    Heu, ce n'est qu'un exemple bien sûr, mais zsh était déjà dans Linux Slackware 3.3 (sortie en 1997). Je n'ai donc pas vraiment l'impression qu'avoir zsh dans une distribution linux soit très novateur...

    ftp://ftp.slackware.com/pub/slackware/slackware-3.3/slakware(...)

    • [^]Re: Une dépêche !

      Posté par d-jo (page perso, ) le 02/05/2007 à 16:30. (lien). Évalué à 3.

      Zsh est le shell par defaut de gobolinux.

      http://www.gobolinux.org/

      • [^]Re: Une dépêche !

        Posté par Ernest H (Jabber id, ) le 02/05/2007 à 18:04. (lien). Évalué à 3.

        Et de grml, LE live cd pour les (console) geeks.

        http://grml.org/

  • [^]Re: Une dépêche !

    Posté par Bapt (page perso, ) le 02/05/2007 à 13:44. (lien). Évalué à 3.

    La dépêche se sera plutôt pour la version stable officielle (4.4.0 :))

    Concernant la licence, elle est courte, le mieux c'est de la lire :

    The Z Shell is copyright (c) 1992-2007 Paul Falstad, Richard Coleman,
    Zoltán Hidvégi, Andrew Main, Peter Stephenson, Sven Wischnowsky, and
    others. All rights reserved. Individual authors, whether or not
    specifically named, retain copyright in all changes; in what follows, they
    are referred to as `the Zsh Development Group'. This is for convenience
    only and this body has no legal status. The Z shell is distributed under
    the following licence; any provisions made in individual files take
    precedence.

    Permission is hereby granted, without written agreement and without
    licence or royalty fees, to use, copy, modify, and distribute this
    software and to distribute modified versions of this software for any
    purpose, provided that the above copyright notice and the following
    two paragraphs appear in all copies of this software.

    In no event shall the Zsh Development Group be liable to any party for
    direct, indirect, special, incidental, or consequential damages arising out
    of the use of this software and its documentation, even if the Zsh
    Development Group have been advised of the possibility of such damage.

    The Zsh Development Group specifically disclaim any warranties, including,
    but not limited to, the implied warranties of merchantability and fitness
    for a particular purpose. The software provided hereunder is on an "as is"
    basis, and the Zsh Development Group have no obligation to provide
    maintenance, support, updates, enhancements, or modifications.

  • [^]Re: Une dépêche !

    Posté par Bapt (page perso, ) le 02/05/2007 à 13:45. (lien). Évalué à 3.

    au fait zsh est déjà dans quasiment toutes les distros et os libres.

    • [^]Re: Une dépêche !

      Posté par Étienne Bersac (Jabber id, page perso, ) le 02/05/2007 à 14:26. (lien). Évalué à 2.

      Oui, mais c'est souvent bash qui est sélectionné par défaut.

      --
      E Ultreïa !
      • [^]Re: Une dépêche !

        Posté par Bapt (page perso, ) le 02/05/2007 à 14:56. (lien). Évalué à 4.

        Ce que j'ai toujours eu du mal à comprendre (d'un point de vue technique), mais qui peut certainement s'expliquer par trois lettre : GNU
        La majeure partie des distrib se disent GNU/Linux donc Linux + utilitaires GNU donc bash.

        Moi je n'installer bash sur mes machines sauf à cause de git (quel est l'idiot qui a décider de faire du bash en lieu et place du bon vieux bourne shell pour les scripts git...)

        • [^]Re: Une dépêche !

          Posté par patrick_g (page perso, ) le 02/05/2007 à 15:00. (lien). Évalué à 5.

          >>> quel est l'idiot qui a décider de faire du bash en lieu et place du bon vieux bourne shell pour les scripts git...)

          Linus ?

          • [^]Re: Une dépêche !

            Posté par Bapt (page perso, ) le 02/05/2007 à 15:03. (lien). Évalué à 2.

            la question n'attendait pas réponse :)

Fichier de conf pour zsh

Posté par CTAF (page perso, ) le 02/05/2007 à 14:51. (lien). Évalué à 2.

sur http://www.sf.net/projects/grk vous trouverez des fichiers de conf pour zsh assez évolué. Mettant notamment en pratique le plus de completion possible, un jolie prompt, et quelques goodies.


screenshot des differentes completions de zsh: http://sourceforge.net/project/screenshots.php?group_id=1634(...)

--
grk -- Il pleut des vaches sur la banquise.
  • [^]Re: Fichier de conf pour zsh

    Posté par David () le 02/05/2007 à 22:28. (lien). Évalué à 7.

    j'arrive pas a passer le niveau 21 du wizard de configuration de zsh! c'est celui ou il faut definir les "modifiers" sur les "completers" ...

    Et sinon, quelqu'un connait la warpzone pour configurer les couleurs pour "ls", sans passer par tous les donjons precedents??

    =>[]

    --
    -- Front de Libération des Sources --
    Pour stopper les trolls, citons les sources !

Franchais

Posté par Étienne Bersac (Jabber id, page perso, ) le 02/05/2007 à 16:07. (lien). Évalué à 4.

Complétion ou complètement ?

--
E Ultreïa !
  • [^]Re: Franchais

    Posté par Aldoo (Jabber id, ) le 02/05/2007 à 17:29. (lien). Évalué à 10.

    Complétude !

Quand est-il du poids

Posté par d-jo (page perso, ) le 02/05/2007 à 16:34. (lien). Évalué à 1.

J'avais essayé zsh il y a un an environ (debian conf par defaut), et j'avais trouvé ça relativement lourdingue (gros, lent).

Est-ce un defaut du shell ? de debian ? de mon utilisation ?
Gagne-t-on quelque chose par rapport aux autres shell au niveau performances. Les fonctions "natives" sont-elles plus rapides que les appels binaires de bash (grep, seb awk ?)

  • [^]Re: Quand est-il du poids

    Posté par Bapt (page perso, ) le 02/05/2007 à 16:51. (lien). Évalué à 2.

    A mon avis ca vient de ton utilisation, et peut être un peu de la conf (je ne me souviens pas la dernière fois que j'ai utiliser la conf par défaut des OS que j'utilise.)

    Maintenant qu'est ce que tu entends pas gros et lent.

    un appel a une commande externe est la plus part du temps beaucoup plus couteux en temps que la même chose faite nativement. Surtout quand c'est répété.

    Par exemple :
    extern.sh

    n=0
    while [ $n -ne 100 ] ;do
    TOTO=truc
    echo $TOTO | sed 's/ruc/oto/'
    (( n = n + 1 ))
    done

    ou
    natif.sh

    n=0
    while [ $n -ne 100 ] ;do
    TOTO=truc
    echo ${TOTO/ruc/oto}
    (( n = n + 1 ))
    done

    donne chez moi :
    zsh extern.zsh > /dev/null 0,28s user 0,69s system 99% cpu 0,977 total
    zsh natif.zsh > /dev/null 0,01s user 0,03s system 96% cpu 0,038 total

    La différence est quand même flagrante, pourtant quand je la 10 occurrence de la boucle au lieu de 100 la différence ne se voit pratiquement pas.

    (Note que mon exemple doit aussi fonctionner sous bash.)

  • [^]Re: Quand est-il du poids

    Posté par Clément varaldi (page perso, ) le 02/05/2007 à 18:37. (lien). Évalué à 7.

    Quand est-il du poids

    Ho, demain je crois... Mais rien n'est moins sûr.

posix

Posté par Matthieu C () le 02/05/2007 à 19:51. (lien). Évalué à 1.

Vous voulez faire de la programmation shell, ZSH propose tout ce que vous voulez pour ne pas avoir à utiliser tout le pack (sed, awk, grep, bc, expr, ...) permettant ainsi de faire des scripts plus légers et plus portable (juste besoin d'avoir zsh sur la plateforme, et pas une versions (GNU, AIX, SUN ou BSD) des outils sed, awk, grep, ... qui n'ont pas toujours la même syntaxe ni les même options.
En se contentant des options POSIX, on a plus de chance de faire un truc portable qu'un truc dependant de zsh.

Et puis vu que dash (shell minimaliste) est souvent plus rapide que bash, j'ai de gros doute sur les perfs de zsh.

Faudrait faire un bench sur les temps de boot (oui les script de boot utilise /bin/sh).

  • [^]Re: posix

    Posté par z a (Jabber id, ) le 02/05/2007 à 19:59. (lien). Évalué à 3.

    clairement, d'ailleurs le C est plus portable et plus rapide, programmez en C !

    • [^]Re: posix

      Posté par Xavier Maillard (Jabber id, page perso, ) le 02/05/2007 à 21:06. (lien). Évalué à 2.

      moi je préfère ubuntu. QUoi ? Comment ça ça n'a rien à voir ?

  • [^]Re: posix

    Posté par Bapt (page perso, ) le 03/05/2007 à 08:33. (lien). Évalué à 2.

    Et puis vu que dash (shell minimaliste) est souvent plus rapide que bash, j'ai de gros doute sur les perfs de zsh.


    Ce que tu dis est vrai pour des scripts posix uniquement donc faisant appel à des commandes externes pour tout ce qui n'est pas gérer par le bourne shell (grep, awk, sed, etc.)

    dash est l'implémentation de ash. sur mon poste freebsd /bin/sh correspond à ash donc la même chose que dash.

    si je fait le même test que j'ai fait au dessus.

    version bourne shell de extern.zsh ca donne :

    let $(( n = 0 ))
    while [ $n -ne 100 ] ;do
    TOTO=truc
    echo $TOTO | sed 's/ruc/oto/'
    let $(( n = n + 1 ))
    done


    sh extern.sh > /dev/null 0,21s user 0,53s system 99% cpu 0,746 total

    alors que natif.zsh donne :
    zsh natif.zsh > /dev/null 0,01s user 0,03s system 96% cpu 0,038 total

    Bien sûr ce n'est pas un benchmark, mais ça donne une idée, l'intérêt de dash et ash c'est de respecter les strictosensus le bourne shell, et donc de fournir une implémentation légère et très peu gourmande en mémoire. ce qui dans des contraintes de petite configuration peu s'avérer intéressant.

    biensûr zsh est compatible bourne shell, et sur du bourne shell pur il est plus lent et gourmant que dash ou ash :
    zsh estern.sh > /dev/null 0,26s user 0,71s system 99% cpu 0,976 total

    voila comme souvent tout dépend du besoin et des contraintes de destinations.

    Beaucoup de script shell gagnerait à utiliser du zsh avancé, mais ce n'est pas la solution unique

    PS:
    test sur FreeBSD 6.2-RELEASE sur pentium III IGhz avec 512 Mo de RAM. La même chose sur une machine genre p133 16Mo de RAM devrait normalement plus tourner en faveur de dash/ash (ce serait intéressant de faire le test)

    • [^]Re: posix

      Posté par Matthieu C () le 03/05/2007 à 11:53. (lien). Évalué à 2.

      sh extern.sh > /dev/null 0,21s user 0,53s system 99% cpu 0,746 total

      alors que natif.zsh donne :
      zsh natif.zsh > /dev/null 0,01s user 0,03s system 96% cpu 0,038 total


      Et, si tu ecrit une version bourne shell de ton test sans utiliser sed, ca sera encore plus rapide (bon ton exemple est moisi parce que tu fait rien de concret)...

      Voici une version sh encore plus rapide (j'ai un peu triché, mais bon j'ai le meme resultat que toi) :

      n=0
      while [ $n -ne 100 ] ;do
      TOTO=truc
      echo ${TOTO%%ruc}oto
      n=$(( $n + 1 ))
      done



      Beaucoup de script shell gagnerait à utiliser du zsh avancé, mais ce n'est pas la solution unique
      Beaucoup de script shell gagnerait à être écrit proprement en utilisant un max les fonctionnalité du shell pour lequel il est prevu.


      PS : on peut faire encore plus optimisé (oui c'est débile...) :

      n=0
      while [ $n -ne 100 ] ;do
      echo truc
      n=$(( $n + 1 ))
      done

      • [^]Re: posix

        Posté par Bapt (page perso, ) le 03/05/2007 à 14:23. (lien). Évalué à 2.

        Mon but depuis le début est justement de montré que l'utilisation de sed grep awk etc. ralenti les scripts et que zsh peut dans le cas de programmation complexe (loin de l'exemple que je montre) permettre de faire de la programmation shell avec des meilleurs performances que la plupart des autres car permet de se passer de ses outils.

        Pour le montrer j'ai pris un truc echo avec un rechercher remplacer simple (qui existe aussi bien en bash que en zsh pour le coup mais pas en bourne shell). D'ailleur dans mon post précédent je dis bien que dash/ash sont plus rapide que zsh en leur faisant executer le même script (avec sed). Ils sont même certainement mieux adaptés dans beaucoup de cas.

        Mais dash/ash ont des limitation d'un point de vue programmation comparés à zsh, idem pour bash. Mais ils sont plus rapide (dash/ash) ils n'ont pas le même but. Alors que bash et zsh oui.

        Mon exemple démontre ce qu'il veut démontrer, à savoir utiliser des applis externes est coûteux.

[+] tout faux !

Posté par denisb () le 03/05/2007 à 10:05. (lien). Évalué à -1.

Le meilleur shell, c'est celui-ci !

http://www.codingteam.net/tagada-aff.html

Malheureusement, cela ne fonctionne que sur Ubuntu/Debian...

Revenir en haut de page