Journal ZSH 4.3.4 full unicode

Posté par  (site web personnel) .
Étiquettes : aucune
0
2
mai
2007
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
  • # Boucle infine...

    Posté par  . É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  (site web personnel) . É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  . É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  (site web personnel) . É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  . É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  (site web personnel) . É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  (site web personnel) . É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)
  • # Commentaire supprimé

    Posté par  . Évalué à 3.

    Ce commentaire a été supprimé par l’équipe de modération.

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

      Posté par  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . Évalué à 3.

      au fait zsh est déjà dans quasiment toutes les distros et os libres.
  • # Fichier de conf pour zsh

    Posté par  . É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(...)
    • [^] # Re: Fichier de conf pour zsh

      Posté par  . É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??

      =>[]
  • # Commentaire supprimé

    Posté par  . Évalué à 4.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Quand est-il du poids

    Posté par  (site web personnel) . É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  (site web personnel) . É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  . Évalué à 7.

      Quand est-il du poids

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

    Posté par  . É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  . Évalué à 3.

      clairement, d'ailleurs le C est plus portable et plus rapide, programmez en C !
      • [^] # Re: posix

        Posté par  . Évalué à 2.

        moi je préfère ubuntu. QUoi ? Comment ça ça n'a rien à voir ?
    • [^] # Re: posix

      Posté par  (site web personnel) . É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  . É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  (site web personnel) . É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  . Évalué à -1.

    Le meilleur shell, c'est celui-ci !

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

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

Suivre le flux des commentaires

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