« Si vous voulez rendre votre ligne de commande plus productive, plus utile et plus amusante, sans avoir à apprendre un tas de syntaxe obscure et d'options de configuration, alors Fish pourrait être exactement ce que vous recherchez », a écrit l'équipe de Fish Shell dans la documentation de l'outil. Il est principalement caractérisé par les éléments suivants :
- autosuggestions en ligne basées sur l'historique ;
- complément de tabulation utilisant les données des pages de manuel ;
- mise en évidence de la syntaxe ;
- support intuitif des caractères génériques ;
- configuration basée sur le Web ;
- une saine écriture de scripts.
Autosuggestions et mise en évidence de la syntaxe
L'une des principales caractéristiques de Fish est l'autosuggestion implémentée dans le shell. Cette fonctionnalité vous donne la possibilité d'accéder rapidement aux commandes au fur et à mesure que vous les tapez. En d'autres termes, Fish suggère des commandes au fur et à mesure que vous tapez, en se basant sur l'historique et les complétions, tout comme un navigateur Web. Vous pouvez trouver cela dans Zsh également, mais elle serait à l'origine dans Fish.
De plus, Fish possède d'autres fonctionnalités. Par exemple, si vous faites une erreur de frappe, il affichera les commandes incorrectes et invalides en rouge. C'est beaucoup plus rapide que Ctrl+R et cela afficherait généralement la commande que vous voulez 80 % du temps. En outre, Fish est entièrement scriptable, et sa syntaxe serait simple, propre et cohérente.
Complétion d'onglets basée sur les pages de manuel
Fish analyse les pages de manuel des outils CLI, ce qui lui permet de fournir facilement des complétions automatiques pour la plupart des commandes. Vous pouvez utiliser la tabulation pour obtenir toutes les options.
Configuration basée sur le Web
Une autre caractéristique remarquable de Fish est que vous pouvez le configurer comme une interface Web fonctionnant sur votre serveur local. De plus, l'interface Web vous permet de modifier la couleur du schéma que vous souhaitez. Elle vous permet également de parcourir vos variables d'environnement. Il existe d'autres fonctionnalités :
- recherche des raccourcis clavier du terminal ;
- invites de commande attrayantes et colorées ;
- historique de la ligne de commande.
Saine écriture des scripts et personnalisation
Commet souligné plus haut, Fish est entièrement scriptable, et sa syntaxe est simple, propre et cohérente. Vous n'utiliserez plus do et done dans une boucle. Il s'agirait d'un avantage clé par rapport à Bash. En outre, vous pouvez également installer des thèmes pour Fish et le personnaliser selon vos goûts. Si vous avez utilisé Zsh, vous avez peut-être utilisé le grand gestionnaire de paquets oh-my-zsh. Ici, oh-my-fish est le gestionnaire de paquets de Fish.
Utilisation des variables avec Fish Shell
Comme les autres shells, le signe dollar ($) effectue une substitution de variable. La substitution de variable se produit également dans les guillemets doubles, mais pas dans les guillemets simples. Contrairement aux autres interpréteurs de commandes, Fish n'a pas de syntaxe VARIABLE=VALUE dédiée pour définir les variables. À la place, il a une commande ordinaire : set, qui prend un nom de variable, puis sa valeur.
Comparaison entre Fish Shell et Zsh
La plupart des scripts shell sont fondamentalement les mêmes. Ils donnent le même résultat et partagent le même environnement de script. Mais certaines différences subtiles sont uniques pour chacun des scripts shell. Fish et Zsh sont classés comme les meilleurs scripts shell grâce à leur façon d'écrire des scripts et des fonctions. En outre, les deux sont des outils open source que tout le monde peut utiliser librement. Zsh est une extension du langage Bash, et la façon dont les scripts sont rédigés avec Fish est totalement différente de Bash ou, pour être plus précis, du langage Zsh.
Principales différences entre Fish et Zsh
- Fish est facile à comprendre et à installer par rapport à Zsh. Vous n'avez pas besoin de commandes Bash ou de script Bash interactif pour installer Fish. Les plug-ins doivent être téléchargés et conservés dans un dossier spécifique pour le bon fonctionnement de Zsh. Alors que Fish, sans aucune de ces difficultés et perturbations, fonctionne bien avec n'importe quels système et utilisateurs ;
- la syntaxe des deux langages est différente. Nous ne pouvons pas dire lequel est facile et lequel est difficile, mais ils sont différents. Lorsque plus d'alias sont utilisés dans Zsh, Fish évite simplement tout type d'alias dans le langage ;
- la principale différence à souligner ici est que Fish possède une caractéristique de coloration syntaxique et de suggestions automatiques dans le script. Cela aide les utilisateurs à travailler avec le script en toutes circonstances et à mettre en évidence les scripts nécessaires indiqués dans le langage. Cela permet à un script Fish de se démarquer de tout autre langage de script. Le fait que les erreurs sont mises en évidence avant même d'appuyer sur la touche Entrée du clavier est un avantage majeur. Zsh n'a aucune de ces caractéristiques, et beaucoup aiment Fish à cause de cette fonctionnalité dans le langage. Toutefois, ces caractéristiques peuvent être rendues disponibles dans Zsh en installant certains plug-ins dans le système ;
- Zsh possède de nombreux paramètres personnalisables qui incluent la correction orthographique, la personnalisation des couleurs, et ainsi de suite. Le contexte est facilement compréhensible dans Zsh, et il remplit les scripts par lui-même dans la CLI. Fish est beaucoup plus personnalisable que Zsh avec sa fonction d'aide, sa syntaxe cohérente et bien d'autres. La personnalisation des paramètres n'est pas un défi dans aucun de ces langages de script ;
- il est facile de rechercher l'historique dans le scripting Fish avec les commandes haut et bas du langage de script. Les correspondances en double sont supprimées automatiquement, ce qui facilite l'écriture de scripts. Cette fonctionnalité n'est pas disponible dans Zsh, mais peut être ajoutée à l'aide de plug-ins dans le langage ;
- nonobstant tous ces points glorieux de Fish, certains estiment néanmoins que les scripts Fish sont lents, plus lents que Zsh. Ainsi, ceux qui veulent travailler avec des scripts plus rapides peuvent choisir Zsh avec tous les plug-ins installés.
Comparaison entre Fish Shell et Bash
Bash est un shell Unix et un langage de commande écrit par Brian Fox pour le projet GNU en tant que logiciel libre remplaçant Bourne Shell. Bash peut également lire et exécuter des commandes depuis un fichier, appelé script shell. Bash est un outil très apprécié sous Linux, mais tout peut être amélioré. Dans la communauté, on lit beaucoup d'avis estimant que Fish est meilleur. Ces commentaires estiment que Fish est un shell alternatif pour Linux et mieux, une amélioration significative de ce que Bash a à offrir.
D'un côté, beaucoup estiment que, bien que Bash soit souvent loué comme étant un excellent shell, il a beaucoup de défauts. Fish serait une excellente alternative avec plusieurs fonctionnalités intéressantes. La plus remarquable serait la saisie prédictive. « Fish est très convivial. Commencez simplement à taper. Il va deviner. Vous voulez taper la commande pacman ? Il y a de fortes chances qu'il la remplisse pour vous. Tout ce que vous avez à faire est d'appuyer sur la flèche droite de votre clavier et de le laisser s'autocompléter. Cette fonctionnalité est très puissante », commente Derrik Diener, un blogueur du site Make Tech Easier.
La saisie prédictive de Fish ne fonctionne pas seulement avec les commandes système (comme les packagers), mais avec n'importe quel commande ou programme de terminal disponible. S'il est installé sur votre système d'une manière ou d'une autre, Fish le trouvera et vous en informera. « Si Bash est un bon shell, Fish est meilleur. Il compense une grande partie des défauts de Bash et des autres shells. La fonction d'autocomplétion est une bouée de sauvetage, et les options de configuration robustes sont un ajout bienvenu. L'interpréteur de commandes est très rapide et léger sur ses pieds », a déclaré Diener.
« Bien sûr, il existe d'autres alternatives, et peut-être même certaines qui offrent des fonctionnalités équivalentes, mais là où Fish gagne, c'est dans sa simplicité. Il est facile à mettre en place, facile à configurer et facile à faire fonctionner », a-t-il ajouté. Il existe également d'autres opinions sur le sujet : doit-on remplacer Bash par Fish ? Voici quelques-unes d'entre elles :
- "Bash a peut-être des défauts, mais l'absence d'autocomplétion n'en fait pas partie. Vraiment, aucun de ces shells fantaisistes et modernes avec toutes leurs cloches et leurs sifflets ne me convainc vraiment. Si je m'éloigne un jour de Bash, ce sera pour quelque chose de plus simple, comme mksh".
- "En ce qui concerne les langages de script, Bash est vraiment nul. Mais indépendamment du shell que vous utilisez comme shell interactif, vous pouvez écrire vos scripts dans n'importe quel langage, donc la mauvaise syntaxe de script de Bash n'est pas vraiment pertinente pour mon choix d'un shell interactif".
- "As-tu essayé Fish ? Je n'ai jamais été capable de faire en sorte que la complétion automatique de Bash soit aussi agréable. J'aime la façon dont Fish se souvient des complétions récentes et suggère celles-là en premier, au lieu de faire défiler les choix dans l'ordre".
- "Je me considère comme un novice lorsqu'il s'agit d'OS de type Unix, mais Fish a définitivement rendu l'expérience beaucoup plus amusante et pratique pour moi depuis que j'ai commencé à l'utiliser. L'autocomplétion intelligente et la facilité de configuration sont une aubaine. Il m'a fait commencer à aimer la ligne de commande, quelque chose que je n'aurais jamais cru possible auparavant".
Sources : Fish Shell, Discussion Reddit (Fish vs. Bash)
Et vous ?
Quel est votre avis sur le sujet ?
Quel shell utilisez-vous ? Quelles sont les raisons de votre choix ?
Selon vous, Fish est-il meilleur que Bash ou Zsh ? Pourquoi ?
Quelle comparaison faites-vous entre Fish et Bash et entre Fish et Zsh ?
Avez-vous testé ces trois shells ? Si oui, quel est votre retour d'expérience ?
Voir aussi
Apple remplace Bash par Zsh comme shell par défaut dans macOS Catalina, à partir de la version bêta de la nouvelle mise à jour
Xonsh : un nouveau shell qui combine Python et les fonctionnalités des shell Bash, zsh et fish, est disponible sur Windows, Mac OS X et Linux
Bash 5.0 est maintenant disponible, la cinquième version majeure du shell du projet GNU apporte de nouvelles fonctionnalités et corrections de bogues
Babel Fish ou le traducteur vocal instantané, un projet de Google sur smartphones