fish shell : la completion sans modules, et ce qu'elle fait gagner
Résumé
fish shell place l'experience interactive en premier : des suggestions tirees de l'historique pendant la frappe, une ligne de commande coloree en direct, un historique consultable et une completion qui couvre arguments, branches et noms de processus. Le prix est une syntaxe de script a lui, incompatible avec bash.
Recommander- Nom
- fish shell
- Version
- 4.9.3
- Tarif
- Gratuit
- Open source
- Open source
- Système
- WindowsmacOSLinux
- Mis à jour
- 2026-10-06 16:02
La mise en place que l'on n'a pas a faire
fish, pour friendly interactive shell, est un shell de ligne de commande qui place l'experience interactive au premier plan. Ce qui le separe de bash et zsh tient en une phrase : installe veut dire configure. Pendant la frappe, une suggestion tiree de l'historique apparait en dessous et s'accepte d'une fleche. La ligne se colore a mesure, si bien que l'existence d'une commande et la validite d'un chemin se voient pendant la frappe et non apres l'envoi. La completion va au-dela des noms de fichiers : arguments de commandes, branches de gestion de versions et noms de processus sont proposes, et la liste des candidats se feuillette avec des descriptions.
La portee de cela se sous-estime facilement. Dans les autres shells, la moitie de ce comportement existe deja - par des modules, des cadres et un fichier de configuration qu'il faut assembler et entretenir. Ici, c'est l'etat du programme avant que quiconque ait configure quoi que ce soit. Le benefice arrive donc dans la premiere minute et non apres le premier week-end.
Quelques details de l'interaction
L'historique se cherche par mot-cle, et une commande anterieure du meme genre se rappelle par son debut. La completion par tabulation et le deploiement des motifs montrent a l'avance ce qui va etre substitue. Les abreviations sont l'un des elements les plus utiles : une longue commande frequente se definit en quelques caracteres, et apres deploiement la commande complete reste visible sur la ligne - a la difference d'un nom court qui cache le contenu reel et laisse le lecteur d'un historique deviner.
L'invite, les couleurs et les fonctions se reglent sur une page de configuration integree qui s'ouvre dans un navigateur, et les changements prennent effet aussitot. C'est une petite decision avec une consequence concrete : modifier un fichier de configuration a la main suppose de savoir ou il se trouve, quelle est la syntaxe et comment revenir sur une faute de frappe - et chacune de ces suppositions est une raison de rester des annees dans les valeurs par defaut.
Ce qu'il faut savoir des scripts a l'avance
Le prix se situe du cote des scripts : fish a sa propre syntaxe et n'accepte pas bash. Les variables s'affectent avec set, les conditions se ferment par end plutot que par le couple then et fi, une chaine sans guillemets n'est pas decoupee en mots, et les listes comme les chemins suivent d'autres regles. Consequence pratique : la masse des fragments bash trouves en ligne ne peut pas etre collee et lancee, et les scripts existants doivent soit etre reecrits, soit etre executes explicitement par bash.
L'importance de cela depend entierement du rapport entre taper des commandes et ecrire des scripts. Pour qui tape toute la journee, l'effet est proche de zero et le gain est quotidien. Pour qui entretient une collection de scripts, le cout du transfert est reel et doit etre compte avant le changement plutot que decouvert apres.
Version et plateformes
La serie 4 a ete un jalon important : tout le projet a ete reecrit en Rust, la performance et la facilite d'entretien etant nettement ameliorees selon les auteurs, et les modes d'installation ont ete ajustes avec l'outil de construction. Aujourd'hui la serie stable a atteint 4.9.3, publiee en septembre 2026, et le rythme est rapide. L'installation couvre Windows, macOS et Linux, et la plupart des distributions portent un paquet dans leurs depots. Avant d'en faire le shell par defaut, il vaut de l'essayer un moment dans le terminal courant : un shell par defaut est exactement le genre de reglage qui gene quand il est faux et qui s'essaie facilement avant.
Pourquoi de bons reglages par defaut comptent plus qu'ils n'en ont l'air
Un shell est utilise mille fois par jour en fragments de quelques secondes, et le cout de chaque friction est multiplie par ce nombre. Un shell qu'il faut accorder avant qu'il soit agreable impose une charge fixe a chaque nouvelle machine, a chaque nouveau compte et a chaque collegue qui emprunte une session. Fournir l'accord comme valeur par defaut ne rend aucune commande plus rapide. Cela retire une tache d'entretien qui n'a jamais ete interessante et qui etait toujours repoussee.
L'incompatibilite porte un cout social autant que technique. Le savoir partage sur la ligne de commande est en grande partie du bash partage, et un shell qui ne peut pas l'executer demande a chacun de tenir deux syntaxes en tete. C'est un prix juste pour le confort quotidien et un mauvais prix pour une equipe dont le travail est une bibliotheque de scripts - et la meme personne peut raisonnablement se trouver des deux cotes de cette ligne.
Pour qui est las d'assembler la completion a partir d'un tas de configuration, l'experience ici ressemble a une liberation en une fois : suggestions, colorisation en direct et recherche d'historique utilisable sont la des l'installation. Le seul point a peser est l'incompatibilite des scripts avec bash : qui tape des commandes toute la journee le remarque a peine, qui vit de scripts doit d'abord calculer le cout du transfert.