Journal Installation de fish shell sur Debian Jessy

Posté par (page perso) . Licence CC by-sa
18
2
jan.
2015

fish est un shell comme zsh ou bash : http://fishshell.com/

Pour moi, son point fort sont les autosuggestions, il est rarement nécessaire de taper une deuxième fois une commande et ça sans nécessiter de ^R.

Le paquet Debian n'est malheureusement pas dans les dépôts de Jessy, il arrivera dans les backports dès que possible.

Lire pour plus de détails les url suivantes :

Le projet propose des paquets pour les différentes distribution linux via le builder opensuse : http://software.opensuse.org/download.html?project=shells%3Afish%3Arelease%3A2&package=fish

Mais il est aussi facile de le compiler.

Les détails sont fournis ici : https://github.com/fish-shell/fish-shell/#building

Il y a juste deux manques:

  • dans la liste des dépendances nécessaires au build, donnée là : https://github.com/fish-shell/fish-shell/#help-it-didnt-build il manque autoconf ; make et make install se passent alors sans problème.
  • remplacer votre shell actuel par fish se fait grâce à la commande
    chsh mais avant cela, il faut ajouter fish aux shells autorisés
  sudo which fish >> /etc/shells 
  chsh -s /usr/local/bin/fish

Bonne pêche !

  • # Pas des les dépôts ?

    Posté par . Évalué à -1.

    Et sinon tu as essayé dans les Dépôts de Jessie ?

    Dire que vous vous n'en avez rien à faire de la vie privée parce que vous n'avez rien à cacher, c'est comme dire que vous n'en avez rien à faire de la liberté d'expression parce que vous n'avez rien à dire. Edward Snowden

  • # Mouais…

    Posté par (page perso) . Évalué à 2.

    Ton argumentaire était tellement bien, ça m'a donné envie de tester.

    Le prompt par défaut est correcte mais sans plus, par exemple il n'y a pas la branche ni l'état du dépôt quand on est dans un répertoire git, ça me sert souvent.

    Les autosuggestions, j'ai testé rapidement… si je fais 'ls' il me propose 'ls Images' si je fais tab, il complète avec 'ls ico', du coup faut faire flèche droite pour avoir la suggestion mais c'est moins pratique que ctrl-r qui permet de pas bouger les mains si on n'a pas besoin d'éditer la commande.

    Si on fait 'cp rep long/chemin/rep' et donc qu'on a oublié le -r, quand on fait flèche droite on se retrouve en fin de ligne et il faut revenir en arrière alors qu'avec ctrl-r on est au début.

    Quand on fait 'gimp img' dans zsh je peux me déplacer avec les flèches pour prendre celui dans la 3ème colonne, 5ème ligne. Des fois c'est pratique. Là faut faire tab et tous les faire un par un ou compléter le nom.

    Enfin bref, y a plein de petits trucs qui manquent. Après c'est vrai que de loin il est beau et sympa par défaut, genre la coloration sur la ligne de commande qu'on est en train d'écrire <3
    Si on peut avoir ça dans zsh, je prend, le reste j'ai l'impression que tout existe dans zsh même si faut configurer un peu.

    • [^] # Re: Mouais…

      Posté par . Évalué à 3.

      Le prompt par défaut est correcte mais sans plus, par exemple il n'y a pas la branche ni l'état du dépôt quand on est dans un répertoire git, ça me sert souvent.

      fish embarque plusieurs prompt déjà tout configurés qui te donnent des infos sur git. Tu peux en choisir un avec fish_config.

      Les autosuggestions, j'ai testé rapidement… si je fais 'ls' il me propose 'ls Images' si je fais tab, il complète avec 'ls ico', du coup faut faire flèche droite pour avoir la suggestion mais c'est moins pratique que ctrl-r qui permet de pas bouger les mains si on n'a pas besoin d'éditer la commande.

      Sans utiliser les flèches, ça complète aussi avec Ctrl-e, et sinon tu peux définir un autre binding.

      Si on fait 'cp rep long/chemin/rep' et donc qu'on a oublié le -r, quand on fait flèche droite on se retrouve en fin de ligne et il faut revenir en arrière alors qu'avec ctrl-r on est au début.

      Tu fais Ctrl-a et tu reviens au début.

      Quand on fait 'gimp img' dans zsh je peux me déplacer avec les flèches pour prendre celui dans la 3ème colonne, 5ème ligne. Des fois c'est pratique. Là faut faire tab et tous les faire un par un ou compléter le nom.

      Ouais bon ça, c'est un peu une killer feature de zsh, on peut pas tout avoir non plus.

      Sinon l'un des inconvénients, c'est que la syntaxe de scripting n'est pas du tout compatible POSIX. Ça demande de faire un petit travail de réécriture quand on utilise des fonctions custom dans son shell.

      • [^] # Re: Mouais…

        Posté par (page perso) . Évalué à 5.

        la syntaxe de scripting n'est pas du tout compatible POSIX

        Mais AMHA elle est vachement plus cohérente et logique.

      • [^] # Re: Mouais…

        Posté par (page perso) . Évalué à 2.

        Sinon l'un des inconvénients, c'est que la syntaxe de scripting n'est pas du tout compatible POSIX.

        Il me semble que fish se présente comme un shell interactif, mais il ne mets pas en avant le fait d'écrire des scripts avec. D'ailleurs, ce simple fait le rends incompatible avec tous les autres.

        Sinon, je trouve l'interface de configuration très sympa, et ça serait peut-être un truc à avoir sur les autres shells, comme zsh.

        • [^] # Re: Mouais…

          Posté par (page perso) . Évalué à 1.

          Il me semble que fish se présente comme un shell interactif, mais il ne mets pas en avant le fait d'écrire des scripts avec. D'ailleurs, ce simple fait le rends incompatible avec tous les autres.

          C'est vrai qu'on ne voit pas exemple de scripts (programmes) écrit en fish shell avec un #!

          Je viens d'essayer ça, ça marche :

          #! /usr/local/bin/fish
          for i in (seq 5)
              math "$i * 2"
          end
          

          Plus généralement, au niveau de la configuration et de la personnalisation de fish, l'écriture de scripts est encouragée, d'ailleurs la plupart des builtins du shell sont elles même en fish script, voir ici https://github.com/fish-shell/fish-shell/tree/master/share/functions et il est recommandé d'écrire des scripts plutôt que d'utiliser la commande alias http://fishshell.com/docs/current/commands.html#alias qui est là pour compatibilité.

    • [^] # Re: Mouais…

      Posté par (page perso) . Évalué à 10.

      genre la coloration sur la ligne de commande qu'on est en train d'écrire <3
      Si on peut avoir ça dans zsh, je prend

      https://github.com/zsh-users/zsh-syntax-highlighting

      • [^] # Re: Mouais…

        Posté par (page perso) . Évalué à 2.

        C'est également fish qui m'avait fait découvrir ça, et je ne m'en passe plus depuis. C'est vraiment pratique (bien que parfois un peu lourd).

        • [^] # Re: Mouais…

          Posté par . Évalué à 4.

          C'est aussi une la fonctionnalité qui m'a fait passer à zsh. Le cas d'usage par excellence, c'est plop | grep (avec une espace insécable après le pipe parce que tu n'a pas laché Alt+Gr avant d'appuyer sur espace) au lieu de plop | grep et ton shell qui te répond command not found : grep. Avec syntax-highlight, le grep de la première commande passe en rouge.

          Mais le top, c'est pour les non-initiés : vachement bien d'avoir ta commande en vert avant de valider ; 90% de tracas en moins !

          • [^] # Re: Mouais…

            Posté par . Évalué à 4.

            Le cas d'usage par excellence, c'est plop | grep (avec une espace insécable après le pipe parce que tu n'a pas laché Alt+Gr avant d'appuyer sur espace) au lieu de plop | grep et ton shell qui te répond command not found : grep.

            Ça ne m'est jamais arrivé d'une part parce que sur mon mapping c'est AltGr+v pour l'espace insécable d'autre part parce qu'avec zsh moi j'ai :

            typeset -Ag abbreviations
            abbreviations=(
              'Ia'    '| awk'
              'Ig'    '| grep'
              'Ip'    "| $PAGER"
              'Ih'    '| head'
              'It'    '| tail'
              'Is'    '| sort'
              'Iw'    '| wc'
            )

            Ce qui fait que je tape rarement "| grep" mais plutôt "Ig" c'est asez génial comme fonctionnalités (comme beaucoup des fonctionnalités de zsh :) ).

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

          • [^] # Re: Mouais…

            Posté par (page perso) . Évalué à 4.

            Ton problème semble être « latin9 ». Tu peux vérifier cela en comparant avant/après :

            setxkbmap -print
            setxkbmap fr oss
            setxkbmap -print
            

            Cela devrait te permettre de découvrir de nouvelles combinaisons pour de nouveaux symboles, d'oublier la combinaison idiote que tu mentionnais (une espace insécable s'obtient alors via « Shift AltGr space »), et de te concentrer sur des choses plus importantes.

            Debian Consultant @ DEBAMAX

      • [^] # Re: Mouais…

        Posté par (page perso) . Évalué à 2.

        Yes \o/ merci beaucoup, ça marche bien

      • [^] # Re: Mouais…

        Posté par . Évalué à 1.

        Elle est un peu bling bling cette fonction, mais ça y est, je suis amoureux. Déjà, avec oh-my-zsh, c'était vraiment bon, mais là c'est encore plus chouette. :)

  • # fish et vim

    Posté par (page perso) . Évalué à 2.

    Un petit oubli, une fois fish passé en shell par défaut, il est nécessaire d'ajouter à son .vimrc la ligne suivante :

    set shell=/bin/sh 
    
  • # sudo et redirections

    Posté par (page perso) . Évalué à 4.

    Juste une petite remarque non pas lié à fish mais à ceci :

    sudo which fish >> /etc/shells

    sudo lance seulement "which" avec les droits root, la redirection vers /etc/shells est toujours faite par le shell courant. Ce qui est souvent fait est :

    which fish | sudo tee -a /etc/shells

    Sinon pour fish, j'avais bien aimé la coloration syntaxique dynamique. Du coup j'avais trouvé un module zsh-syntax-highlighting qui permet de faire la même chose : https://github.com/zsh-users/zsh-syntax-highlighting (que j'avais configuré pour avoir les mêmes couleurs que vim par habitude)
    Fonctionnalité bien sympa que j'utilise tous les jours !

Suivre le flux des commentaires

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