Pour débuter
Outils de base
VIM
06 min
SSH
14 min
rsync
20 min
Shell fish
13 min
Serveur HTTP
Apache
40 min
Nginx
30 min
PHP
NodeJS
Base de données
MySQL
15 min
Redis
08 min
Emails
HTTPS
FTP
ProFTPD
14 min
Sécurité
Pour le confort
Déploiement

Vous êtes plutôt nombreux à me demander à chaque nouvelle vidéo comment je fais pour avoir l'autocomplétion dans mon terminal. Cela ne vient pas de mon terminal mais plutôt du shell que j'utilise : le shell fish.

Un shell prêt à l'emploi

Fish essaie d'offrir une expérience utilisateur agréable dès son installation et sans configuration complexe. Par défaut, il offre un système de suggestions automatiques basées sur votre historique et sur le système d'auto complétion. Le système d'autocomplétion est d'ailleurs intelligent et va automatiquement parser les pages man pour vous offrir l'autocomplétion au niveau des arguments de vos commandes.
Pour ceux qui disposent d'une interface graphique, fish offre un outil de configuration visuel fish_config qui permet de gérer les couleurs, le prompt, l'historique, les fonctions et les abbréviations depuis son navigateur.

Fish dispose aussi d'une syntaxe simple permettant de combiner des commandes, d'écrire des fonctions... et vous pouvez avoir un bon aperçu des capacités de fish sur le tutoriel fournit dans la documentation.

Mais ! non compatible avec POSIX

En revanche, il est important de noter que fish n'est pas compatible avec la norme POSIX et son fonctionnement varie par rapport à bash ou sh. Cela n'est pas forcément génant si vous écrivez un script car l'utilisation d'un shebang (par exemple #!/bin/sh) vous permet de spécifier le shell à utiliser. En revanche, si vous copiez des commandes provenant d'internet cela peut poser problème.

Par exemple, pour enchainer 2 commandes :

# bash
sudo apt-get update && sudo apt-get install yarn

# fish 
sudo apt-get update; and sudo apt-get install yarn

Ou encore définir une variable d'environnement pour une commande en particulier.

# bash
NODE_ENV=production node index.js

# fish
env NODE_ENV=production node index.js

N'hésitez pas à regarder cette page pour comparer fish aux autres shells.