Installer fish, un shell interactif agréable

J'utilise la distribution Linux Ubuntu depuis environ 3 ans. J'utilisais le shell par défaut bash sans savoir qu'on pouvait en utiliser un autre. J'ai découvert le shell fish par hasard en lisant les commentaires d'une nouvelle sur LinuxFr.org, je l'ai installé et l'ai adopté.

Exemple d'utilisation du shell fish (cliquez sur l'image pour la voir à taille réelle)

En plus de mettre en valeur les commandes avec de la couleur, fish détaille les commandes disponibles avec apt-get en fournissant une courte description et liste les fichiers présents dans le répertoire ~/.config/fish/ en affichant leur taille. Ceci se fait en pressant la touche de tabulation.

Installation

Installer fish se fait très facilement :

sudo apt-get install fish

Ensuite, il faut taper fish dans un terminal pour le lancer et le tester.

Pour en faire son shell par défaut, il faut utiliser la commande chsh :

alexis@ubuntu:~$ chsh
Mot de passe : 
Changement d'interpréteur de commandes initial pour alexis
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
	Interpréteur de commandes initial [/bin/bash]:

On entre /usr/bin/fish et fish devient le shell par défaut, j'ai dû redémarrer mon ordinateur pour que le changement soit effectif, peut-être qu'un redémarrage du serveur graphique suffit à l'appliquer.

Aller plus loin

Là où bash utilise le fichier de configuration ~/.bashrc, fish utilise le fichier ~/.config/fish/config.fish qui n'existe pas par défaut. C'est lui qui permet de personnaliser le shell de l'utilisateur, je me suis servi de la documentation de fish pour l'écrire.

nano se chargera de créer le fichier :

nano ~/.config/fish/config.fish

Dans ce fichier, j'ajoute un code d'accueil qui donne l'heure courante :

cowsay "Bonjour $USER, nous sommes le "(date +'%A %e %B %Y')" et il est "(date +'%H')":"(date +'%M')":"(date +'%S')

Cette commande affiche ceci lors de l'ouverture d'un shell :

 _________________________________________
/ Bonjour alexis, nous sommes le dimanche \
\ 24 mai 2009 et il est 18:38:24          /
 -----------------------------------------
        \   __
         \  (oo)\___
            (__)\       )\/\
                ||w |
                ||     ||

J'insère aussi une fonction pour que grep ajoute des couleurs aux résultats qu'il retourne :

function grep
        grep --color $argv
end

J'enregistre le fichier et quand je redémarre un shell, la vache de cowsay me dit bonjour et le résultat d'un diff est coloré.

Logiciel utilisé :