
Quand on parle de shells, les noms de Bash et Zsh reviennent toujours en premier. Et pour cause, ce sont des standards ! Mais, entre nous, il y a un nouveau joueur dans la partie : Fish (Friendly Interactive Shell). Contrairement à ses cousins, Fish a été conçu dès le départ pour simplifier la vie des utilisateurs, tout en étant plus intuitif et visuellement agréable. Pas besoin d’être un expert pour en tirer parti.
Après avoir exploré Bash, la solution par défaut sur de nombreuses distributions Linux, et Zsh, connu pour sa flexibilité et ses fonctionnalités avancées, il était temps de regarder ce que Fish apporte à la table. Et je dois dire qu’il ne déçoit pas : complétion intelligente, syntaxe simple et surtout, il est prêt à l’emploi sans avoir besoin de passer des heures en configuration.
Alors, prêt à plonger ? 🐟
L’Histoire de Fish
Section intitulée « L’Histoire de Fish »Pour comprendre pourquoi Fish est devenu un shell si apprécié, il faut remonter à sa création en 2005. À cette époque, les développeurs et administrateurs système utilisaient principalement Bash ou Zsh, des outils puissants, mais souvent intimidants pour les nouveaux venus. Entre les syntaxes cryptiques et la nécessité de longues configurations pour les rendre ergonomiques, ces shells avaient besoin d’un concurrent plus user-friendly.
Les débuts : une vision simplifiée
Section intitulée « Les débuts : une vision simplifiée »Fish, acronyme de Friendly Interactive Shell, a été conçu avec un objectif clair : offrir un shell moderne et convivial sans sacrifier la puissance. Ses créateurs, inspirés par les lacunes des outils traditionnels, voulaient créer un shell qui :
- Était prêt à l’emploi, sans configuration complexe.
- Offrait une expérience interactive plus intuitive grâce à des suggestions automatiques et une complétion intelligente.
- Était agréable visuellement, avec une syntaxe colorée pour améliorer la lisibilité.
La première version publique de Fish a rapidement attiré l’attention des développeurs et administrateurs système curieux d’essayer quelque chose de nouveau. À cette époque, les fonctionnalités comme la complétion contextuelle ou les invites dynamiques étaient rares, voire inexistantes dans les autres shells.
Un pari sur l’innovation
Section intitulée « Un pari sur l’innovation »Ce qui distingue Fish dès ses débuts, c’est son approche radicale : s’affranchir des conventions historiques des shells Unix, souvent déroutantes pour les débutants. Par exemple :
- La syntaxe de Fish est volontairement différente de Bash et Zsh. Pas besoin de
export VAR=valueou de mettre des parenthèses étranges autour des commandes. - Les fonctions universelles, les alias dynamiques et l’historique partagé entre sessions étaient déjà des idées innovantes, bien avant leur adoption par d’autres outils.
Adoption et communauté
Section intitulée « Adoption et communauté »Dans les années qui suivent sa sortie, Fish se fait une place grâce à une communauté d’utilisateurs enthousiastes. Le projet gagne en visibilité notamment grâce à GitHub, où il est publié en open source. Les contributions commencent à affluer et le shell évolue rapidement.
Parmi les jalons marquants de son évolution :
- 2009 : Introduction de l’interface web locale pour configurer le shell
facilement (
fish_config). - 2013 : Lancement de Fish 2.0, qui améliore la gestion des scripts et introduit des raccourcis clavier spécifiques.
- 2016 : Avec Fish 2.3, le gestionnaire de plugins Fisher devient incontournable pour étendre les capacités du shell.
- 2018 : Fish 3.0 marque un tournant avec une amélioration massive des performances et un support encore plus étendu pour les outils modernes.
Installation de Fish
Section intitulée « Installation de Fish »Installer Fish est un jeu d’enfant, quel que soit votre système d’exploitation. Voici un guide simple pour vous lancer, que vous soyez sous Linux, macOS, ou Windows.
Sous Linux
Section intitulée « Sous Linux »La plupart des distributions Linux offrent Fish directement dans leurs dépôts. Voici comment l’installer selon votre distribution.
-
Ubuntu / Debian :
Fenêtre de terminal sudo apt updatesudo apt install fishSi vous ne maitrisez pas le gestionnaire de paquets apt, je vous recommande de lire mon guide sur apt pour mieux comprendre son fonctionnement.
-
Fedora :
Fenêtre de terminal sudo dnf install fish -
Arch Linux :
Fenêtre de terminal sudo pacman -S fish -
Autres distributions : Consultez le site officiel de Fish pour des instructions spécifiques.
Sous macOS
Section intitulée « Sous macOS »macOS utilise zsh ou bash par défaut, mais vous pouvez installer Fish très facilement grâce à Homebrew.
-
Installez Fish :
Fenêtre de terminal brew install fish
Sous Windows
Section intitulée « Sous Windows »Sous Windows, Fish peut être installé sur WSL : Windows Subsystem for Linux :
sudo apt install fishChanger votre shell par défaut
Section intitulée « Changer votre shell par défaut »Après l’installation, vous pouvez définir Fish comme shell par défaut pour
éviter de taper fish à chaque fois.
chsh -s $(which fish)Relancez votre terminal et vous voilà directement dans le monde de Fish !
Personnalisation et Configuration de Fish
Section intitulée « Personnalisation et Configuration de Fish »L’un des atouts majeurs de Fish est sa capacité à être prêt à l’emploi, tout en offrant une personnalisation très simple. Je vais vous montrer comment rendre Fish non seulement fonctionnel, mais aussi agréable à utiliser, tout en exploitant ses suggestions intelligentes et ses couleurs dynamiques.
Configurer Fish
Section intitulée « Configurer Fish »L’invite par défaut de Fish est déjà pas mal, mais pourquoi ne pas lui donner un style qui vous ressemble ? La commande magique pour ça, c’est :
fish_configCela ouvre une interface web locale où vous pouvez :
- Choisir un thème d’invite parmi les options disponibles.
- Personnaliser l’apparence et les informations affichées, comme le chemin du répertoire, l’état du git, etc.

Pour appliquer un thème :
- Lancez
fish_config. - Dans l’onglet “Prompts”, cliquez sur “Try it” pour tester les thèmes.
- Une fois satisfait, cliquez sur “Set Prompt” et Theme Set.
Ajouter des alias
Section intitulée « Ajouter des alias »Les alias permettent de simplifier vos commandes. Contrairement à Bash ou Zsh, avec Fish, vous n’avez pas besoin de modifier manuellement un fichier de configuration.
Pour créer un alias :
alias ll="ls -la"Cet alias est actif immédiatement, mais temporaire. Pour le rendre permanent, ajoutez-le à votre configuration utilisateur
funcsave llAjout de plugins avec Fisher
Section intitulée « Ajout de plugins avec Fisher »Pour aller encore plus loin dans la personnalisation, il existe un gestionnaire de plugins ultra pratique : Fisher.
-
Installez Fisher :
Fenêtre de terminal curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher -
Installez un plugin : Par exemple, pour installer un thème populaire comme bobthefish :
Fenêtre de terminal fisher install oh-my-fish/theme-bobthefish -
Liste des plugins installés :
Fenêtre de terminal fisher list -
Désinstallez un plugin si nécessaire :
Fenêtre de terminal fisher remove <nom_du_plugin>
Liste des plugins disponibles sur le site de Fisher
Enregistrer et partager votre configuration
Section intitulée « Enregistrer et partager votre configuration »Toutes vos configurations sont stockées dans le répertoire :
~/.config/fishSi vous souhaitez sauvegarder ou partager votre configuration entre plusieurs machines, il suffit de copier ce fichier, ou mieux, de le gérer via Git. Par exemple :
git init ~/.config/fishcd ~/.config/fishgit add .git commit -m "Initial Fish configuration"Avec ces astuces, Fish deviendra un outil qui non seulement vous fait gagner du temps, mais aussi qui vous ressemble. Prochaine étape : ajouter des extensions et des intégrations pour booster votre productivité. 🐟
Les Raccourcis Clavier Fish
Section intitulée « Les Raccourcis Clavier Fish »L’un des nombreux avantages de Fish est son interactivité fluide, renforcée par une série de raccourcis clavier qui vous permettent d’accélérer votre travail. Ces raccourcis sont soit natifs, soit personnalisables pour répondre à vos besoins spécifiques.
Raccourcis Clavier de Base
Section intitulée « Raccourcis Clavier de Base »Voici les raccourcis de base que tout utilisateur de Fish devrait connaître. Ils vous feront gagner un temps fou dans la navigation et la gestion des commandes.
-
Historique de commandes :
↑/↓: Parcourez les commandes précédentes.Ctrl + R: Recherche dans l’historique avec une recherche incrémentale intelligente. Tapez une partie de la commande et Fish vous propose les correspondances en direct.
-
Édition de commandes :
Ctrl + A: Place le curseur au début de la ligne.Ctrl + E: Place le curseur à la fin de la ligne.Ctrl + U: Efface tout avant le curseur.Ctrl + K: Efface tout après le curseur.Alt + ←/Alt + →: Déplacez le curseur mot par mot.
-
Suppression :
Ctrl + W: Supprime le mot avant le curseur.Ctrl + D: Supprime le caractère sous le curseur ou ferme le terminal si la ligne est vide.
Naviguer dans les Dossiers et Fichiers
Section intitulée « Naviguer dans les Dossiers et Fichiers »Fish facilite la gestion des répertoires avec des raccourcis pratiques :
-
Changer de répertoire :
Alt + ↑/Alt + ↓: Navigue dans l’historique des répertoires.Ctrl + Alt + D: Accède directement au dernier répertoire visité.
-
Recherche de fichiers : Si vous avez installé le plugin fzf, vous pouvez activer une recherche fuzzy dans vos fichiers :
Fenêtre de terminal bind \cf 'fzf'
Suggestions Automatiques et Navigation
Section intitulée « Suggestions Automatiques et Navigation »Fish est célèbre pour ses suggestions intelligentes. Ces raccourcis vous permettent de maximiser leur utilisation :
-
Complétion automatique :
Tab: Affiche les suggestions de complétion pour la commande ou l’argument en cours.→: Accepte la suggestion affichée (complétion basée sur l’historique).
-
Recherche rapide :
Ctrl + S: Active la recherche dans les résultats dehistory.Alt + .: Insère le dernier argument de la commande précédente.
Gestion des Processus
Section intitulée « Gestion des Processus »Pour manipuler les processus directement depuis Fish, ces raccourcis sont essentiels :
-
Contrôle de l’exécution :
Ctrl + C: Arrête une commande ou un script en cours.Ctrl + Z: Met un processus en pause (en arrière-plan).
-
Relancer ou gérer un processus :
fg: Relance un processus mis en pause avecCtrl + Z.jobs: Liste les processus en arrière-plan.
Raccourcis Avancés et Personnalisés
Section intitulée « Raccourcis Avancés et Personnalisés »Fish vous permet également de créer vos propres raccourcis pour les tâches répétitives.
-
Ajouter un raccourci personnalisé : Les raccourcis sont définis avec la commande
bind. Par exemple, pour définir un raccourciCtrl + Tqui affiche l’heure actuelle :Fenêtre de terminal bind \ct 'date' -
Lister tous les raccourcis : Utilisez cette commande pour voir les raccourcis actifs et leurs actions associées :
Fenêtre de terminal bind -
Modifier un raccourci existant : Si vous voulez changer un raccourci, éditez votre fichier
config.fish:Fenêtre de terminal vim ~/.config/fish/config.fishAjoutez-y des commandes comme :
Fenêtre de terminal bind \cc 'clear'
Raccourcis pour les Scripts et Fonctions
Section intitulée « Raccourcis pour les Scripts et Fonctions »Si vous utilisez Fish pour écrire des scripts, il existe des raccourcis pour accélérer vos tâches courantes :
-
Exécuter un script ou une fonction rapidement :
-
Ajoutez des alias ou des abréviations (
abbr) pour exécuter des scripts avec des noms courts :Fenêtre de terminal abbr gs "git status"
-
-
Lancer un script avec un raccourci clavier : Assignez un raccourci qui exécute directement un script Fish :
Fenêtre de terminal bind \cr 'source ~/scripts/mon_script.fish'
Pour découvrir ou approfondir l’utilisation des raccourcis clavier dans Fish, consultez :
- La documentation officielle des raccourcis : Fish Key Bindings
- La commande
bindpour inspecter et personnaliser vos raccourcis.
Avec ces raccourcis, Fish devient un véritable outil de productivité au quotidien. Prenez le temps de les apprendre et de les personnaliser : vous serez surpris de voir à quel point ils simplifient vos flux de travail. 😊🐟
Les Fonctions Avancées dans Fish
Section intitulée « Les Fonctions Avancées dans Fish »Dans Fish, les fonctions permettent de regrouper plusieurs commandes sous un même nom, pour simplifier les tâches répétitives ou complexes. Contrairement aux alias, elles offrent plus de flexibilité et permettent des scripts dynamiques. Avec une syntaxe simple et lisible, Fish facilite la création et l’utilisation de fonctions avancées.
Créer une fonction
Section intitulée « Créer une fonction »Créer une fonction dans Fish est un jeu d’enfant. Voici la syntaxe de base :
function nom_de_la_fonction # Commandes à exécuterendExemple :
function bonjour echo "Bonjour, utilisateur de Fish !"endPour appeler cette fonction :
bonjourUtiliser des arguments dans une fonction
Section intitulée « Utiliser des arguments dans une fonction »Les fonctions Fish peuvent prendre des arguments, accessibles via $argv. Voici
un exemple pratique :
function salut echo "Salut, $argv[1] ! Comment vas-tu ?"endAppel de la fonction avec un argument :
salut BobSortie :
Salut, Bob ! Comment vas-tu ?Vous pouvez accéder à plusieurs arguments :
$argv[1]pour le premier.$argv[2],$argv[3], etc., pour les suivants.$argvpour tous les arguments.
Persistance des fonctions
Section intitulée « Persistance des fonctions »Les fonctions que vous créez dans une session Fish sont temporaires, sauf si vous les enregistrez.
-
Rendre une fonction permanente : Utilisez
funcsave:Fenêtre de terminal funcsave bonjourCela enregistre la fonction dans
~/.config/fish/functions/bonjour.fish. -
Lister les fonctions existantes :
Fenêtre de terminal functions -
Supprimer une fonction :
Fenêtre de terminal functions -e nom_de_la_fonction
Fonctions dynamiques
Section intitulée « Fonctions dynamiques »Les fonctions Fish peuvent inclure des variables et des conditions pour répondre à des besoins complexes.
- Exemple 1 : Utilisation d’une condition
function verifier if test $argv[1] -lt 10 echo "Le nombre est inférieur à 10." else echo "Le nombre est supérieur ou égal à 10." endendAppel :
verifier 8- Exemple 2 : Utilisation d’une boucle
function compter for i in (seq $argv[1]) echo "Nombre : $i" endendAppel :
compter 5Fonctions universelles
Section intitulée « Fonctions universelles »Une fonction universelle est accessible dans toutes les sessions Fish (y compris
les nouveaux terminaux). Pour créer une fonction universelle, utilisez l’option
--universal :
function universelle --universal echo "Ceci est une fonction universelle."endPour supprimer une fonction universelle :
functions -e --universal universelleFonctionnalités avancées des fonctions
Section intitulée « Fonctionnalités avancées des fonctions »Fish offre des outils puissants pour enrichir vos fonctions.
-
Événements personnalisés : Les fonctions peuvent être liées à des événements.
Fenêtre de terminal function dire_bonjour --on-event session-startecho "Bienvenue dans Fish !"end -
Fonctions d’aide : Ajoutez une documentation directement dans vos fonctions :
Fenêtre de terminal function addition --description "Ajoute deux nombres"echo $argv[1] + $argv[2] = (math $argv[1] + $argv[2])endTestez-la avec :
Fenêtre de terminal functions --help addition -
Fonctions imbriquées : Vous pouvez appeler une fonction depuis une autre.
Fenêtre de terminal function parentecho "Je suis la fonction parent."enfantendfunction enfantecho "Et moi, je suis la fonction enfant."end
Déboguer une fonction
Section intitulée « Déboguer une fonction »Pour tester ou déboguer une fonction, utilisez l’option --trace :
functions --trace nom_de_la_fonctionCela vous permettra de voir chaque commande exécutée et de corriger les éventuels problèmes.
Les fonctions avancées dans Fish sont un outil essentiel pour personnaliser votre environnement et automatiser vos tâches. Avec leur syntaxe simple et leur flexibilité, elles transforment Fish en un compagnon puissant pour les développeurs et les administrateurs système. 🐟
Variables d’Environnement et Leur Gestion Simplifiée dans Fish
Section intitulée « Variables d’Environnement et Leur Gestion Simplifiée dans Fish »La gestion des variables d’environnement dans Fish est beaucoup plus intuitive que dans les autres shells comme Bash ou Zsh. Avec des commandes claires et des options avancées, vous pouvez facilement manipuler vos variables, les rendre locales, globales ou universelles et les gérer efficacement.
Déclarer une variable
Section intitulée « Déclarer une variable »Dans Fish, les variables s’assignent avec la commande set :
set nom valeurExemple :
set username "Alice"echo $usernameSortie :
AliceLes variables dans Fish ne nécessitent pas le mot-clé export (comme dans
Bash). Elles sont locales par défaut, mais vous pouvez les rendre globales ou
universelles (voir plus bas).
Rendre une variable persistante
Section intitulée « Rendre une variable persistante »Les variables définies avec set sont temporaires et ne survivent qu’à la
session actuelle. Pour rendre une variable persistante, ajoutez-la au fichier de
configuration ~/.config/fish/config.fish.
Exemple :
vim ~/.config/fish/config.fishAjoutez cette ligne :
set -gx PATH $PATH:/nouveau/cheminRechargez votre configuration :
source ~/.config/fish/config.fishÉtendue des variables
Section intitulée « Étendue des variables »Dans Fish, les variables peuvent avoir différentes portées :
-
Locale (par défaut) : Valide uniquement dans le scope où elle est définie, comme une fonction.
Fenêtre de terminal function test_variableset -l local_var "Je suis local"echo $local_varend -
Globale : Disponible dans toute la session actuelle.
Fenêtre de terminal set -g global_var "Je suis globale"echo $global_var -
Universelle : Partagée entre toutes les sessions Fish et persistante.
Fenêtre de terminal set -U universal_var "Je suis universelle"
Supprimer une variable
Section intitulée « Supprimer une variable »Pour supprimer une variable, utilisez simplement set -e :
set -e variable_a_supprimerVérifier les variables définies
Section intitulée « Vérifier les variables définies »Vous pouvez afficher toutes les variables actuellement définies dans votre session Fish avec :
setPour afficher uniquement une variable spécifique, utilisez :
echo $nom_de_la_variableManipuler le $PATH
Section intitulée « Manipuler le $PATH »Le $PATH est une variable d’environnement importante qui indique où chercher
les exécutables. Avec Fish, vous pouvez facilement le modifier :
-
Ajouter un chemin au
$PATH:Fenêtre de terminal set -U PATH $PATH /chemin/supplementaire -
Afficher les chemins actuels :
Fenêtre de terminal echo $PATH -
Retirer un chemin :
Fenêtre de terminal set -U PATH (string match -v /chemin/supplementaire $PATH)
Variables dynamiques et substitutions
Section intitulée « Variables dynamiques et substitutions »Fish permet d’utiliser des substitutions pour attribuer des valeurs dynamiques aux variables.
-
Exemple avec une commande :
Fenêtre de terminal set date_actuelle (date)echo $date_actuelle -
Exemple avec une liste :
Fenêtre de terminal set fichiers (ls)echo $fichiers
Variables et scripts
Section intitulée « Variables et scripts »Les variables définies dans un script sont locales par défaut. Vous pouvez les passer en argument pour les manipuler dynamiquement :
function afficher echo "Argument 1 : $argv[1]" echo "Argument 2 : $argv[2]"end
afficher "Bonjour" "Fish"Sortie :
Argument 1 : BonjourArgument 2 : FishAvec Fish, la gestion des variables d’environnement est intuitive et puissante. Que vous travailliez avec des variables locales, globales ou universelles, Fish vous offre des outils simplifiés et ergonomiques pour gérer votre environnement efficacement. 😊
Conclusion
Section intitulée « Conclusion »En 2025, Fish est reconnu comme l’un des meilleurs shells modernes pour son ergonomie et sa simplicité. Il est particulièrement prisé des développeurs, des administrateurs système et même des débutants. Pourquoi ? Parce qu’il combine les atouts suivants :
- Une interface intuitive avec des couleurs, des suggestions et une gestion avancée des commandes.
- Une compatibilité avec la plupart des outils de l’écosystème Unix.
- Une communauté active, qui continue de développer des plugins et des thèmes pour enrichir l’expérience utilisateur.
Fish n’est pas seulement un outil, c’est une philosophie : faire plus, avec moins de complications. Sa trajectoire, de projet marginal à shell incontournable, prouve qu’il a su répondre à un besoin réel. Aujourd’hui, il n’est pas rare de voir des équipes entières de développeurs basculer sur Fish, séduits par son approche résolument moderne.
Et vous, êtes-vous prêt à rejoindre l’aventure Fish ? 🐟