La ligne de commande Linux par défaut est déjà très pratique ! Mais on peut l'améliorer... Dans cette page je vous partage cette configuration que j'ai en place sur mes machines !
Le prompt, c'est ce qui s'affiche à côté du curseur : c'est très intéressant d'y faire figurer des informations comme le répertoire courant ou la branche sur un dépôt de code !
De base avec le shell bash livré par défaut sur la plupart des systèmes, on a des possibilités limitées. On peut cependant personnaliser grace à la variable PS1 mais la syntaxe est vraiment complexe et difficile à maintenir !
Exemple : export PS1='
\[\e[1;33m\]\t\[\e[0m\]>\w>\[\e[1;36m\]$(__git_ps1 "(%s)")\[\e[0m\]
\$ '
Qui affichera :
Soit :
\t : heure courante en jaune (couleurs avec \[\e[1;33m\] pour le jaune et \[\e[0m\] pour reinit)\w : répertoire courant$(__git_ps1 "(%s)") : si dans un dépôt git affiche la branche courante de couleur cyan (exemple dans la documentation git)\$ : si user affiche "$" et si root alors "#"La modification de la variable PS1 est possible dans ce générateur en ligne : Bash Prompt Generator.
Sinon on trouve de nombreuses documentations comme celle-ci par exemple : Customize your Bash prompt - makandra dev
C'est un début, mais il est quand même compliqué de trouver la syntaxe adaptée, et surtout les fonctionnalités sont limitées !
C'est là qu'interviennent des produits pensés pour !
En cherchant des prompts plus performants, on tombe rapidement sur Powerlevel10k
Je n'ai donc pas cherché à l'utiliser...
Je ne remercierai jamais assez mon ancien collègue Théo qui m'a fait découvrir Starship ! Là, les possibilités sont décuplées, et on a une configuration ultra simple et très bien documentée !
De plus, on a des presets qui permettent d'avoir une configuration en 2 clics !
De mon côté j'utilise une base du preset preset Gruvbox légèrement modifiée, disponible sur ce gist.
Le résultat :
truncation_length, truncate_to_repo=false, format dans l'option repo_rootUne révolution pour moi a aussi été d'utiliser le shell Fish ! Effectivement, ce shell propose de très nombreuses fonctionnalités qui me sont devenues très utiles au quotidien :
Et le meilleur : je n'ai eu AUCUNE configuration à faire pour pouvoir en profiter, tout cela est disponible par défaut !
Le mieux pour voir un étendu de ces fonctionnalités disponibles immédiatement à la première utilisation est de lire cette page du site officiel : Tutorial — fish-shell documentation
Sous Debian et Gnome, pour en profiter simplement, on peut modifier la commande lancée par Terminator dans les préférences : onglet profils, puis commande, exécuter une commande personnalisée, et entrer /usr/bin/fish.
Il y a quand même des choses à savoir lorsque l'on vient de bash... Regardez aux chapitre ci-dessous !
cdhLe shell Fish apporte plusieurs nouvelles commandes, mais je me sert particulièrement de cdh qui affiche l'historique des répertoires visités. Très pratique !
Référence de la commande : cdh - change to a recently visited directory — fish-shell 4.5.0 documentation
Dans bash :
export MY_VAR="my value"
La même chose dans le shell Fish :
set -U MY_VAR "my value"
Voir la documentation Fish associée : Universal Variables
Lorsque l'on crée un virtual environment Python, il faut l'activer à l'aide d'un script, par exemple :
source venv/bin/activate
Ce script ne fonctionne pas dans le shell Fish
Par contre un script pour Fish est bien généré ! Il suffit donc de le lancer à la place :
source venv/bin/activate.fish
Référence dans la documentation officielle Python : Creating Virtual Environments
Il existe de multiples solutions pour automatiquement activer le venv lorsque l'on entre dans le répertoire, et donc éviter de devoir manuellement lancer son activation...
Je peux citer par exemple safigo/fish-autovenv: Automatically activate/deactivate Python virtual enviroments when entering/leaving a directory
Un petit utilitaire pour remonter très facilement dans l'arborescence des répertoires !
Exemple d'usage :
/home/user/foo/bar/baz/head/foot $ up
/home/user/foo/bar/baz/head $
/home/user/foo/bar/baz/head $ up 2
/home/user/foo/bar $
/home/user/foo/bar $ up ho
/home $
À récupérer sur GitHub : shannonmoeller/up: Quickly navigate to a parent directory via tab-completion.
Le dépôt contient de quoi installer très rapidement sous les shell bash, ZSH ou Fish !
Un wrapper de la commande rsync qui permet d'ajouter une barre de progression, avec de nombreuses informations utiles :
À récupérer sur GitHub : laktak/rsyncy: A status/progress bar for rsync
Le terme barbare de TUI est lui bien décrit par la définition donnée sur la fiche Wikipedia :
Un environnement en mode texte (TUI, de l'anglais « Text User Interface », « Textual User Interface » ou encore «Terminal User Interface » est un rétronyme introduit dans le jargon informatique après l'invention des environnements graphiques pour se distinguer des interfaces en ligne de commande. Ce type d'interface utilisateur occupe la totalité de l'écran comme les interfaces graphiques, et n'est donc pas limité au traitement ligne par ligne comme les CLI.
La navigation sur l'écran (ou le mouvement vers une ligne de données affichée ) s'effectue par des mouvements de curseur. L'emploi de caractères semi-graphiques permet de dessiner des limites de colonne ou les bords d'un tableau, de souligner ou de faire clignoter le caractère actif (celui sur lequel se trouve le curseur).
Ce type d'environnement s'avère très utile pour le développement d'applications sans besoins graphiques. Il est très économe en ressource mémoire (RAM).
Voici donc quelques exemples d'interfaces qui agrémentent efficacement le terminal, et dont je me sert au quotidien !
Une interface qui permet de visualiser, créer, trier, chercher, supprimer des hôtes SSH, et bien sûr de lancer une connexion ! Il y a même un système de tags qui permet de catégoriser les entrées, et la gestion du port forwarding !
À récupérer sur GitHub : Adembc/lazyssh: A terminal-based SSH manager inspired by lazydocker and k9s - Written in go
Un plugin très pratique au shell Fish ! Il apporte du fuzzy finder pour l'historique de commande, les chemins, fichiers, dans git, pour les id de processus.
Je me sert particulièrement de :
Exemple avec l'historique de commandes :
À récupérer sur GitHub : PatrickF1/fzf.fish: 🔍🐟 Fzf plugin for Fish
Au passage, dans le navigateur de fichiers il est bien possible de scroller la preview avec le clavier : pour cela il faut utiliser maj+⬆️ ⬇
Cf Keyboard bindings for scrolling preview window? junegunn/fzf.vim#358.
Affichage de log avec coloration syntaxique... et on peut même ajouter les siennes avec un descripteur YAML ! Mais de base beaucoup de formats sont déjà pris en charge.
A récupérer sur GitHub : deponian/logalize: Fast and extensible log colorizer Alternative to ccze
Création le 05/11/2025
Dernière mise à jour le 23/02/2026
Un oubli, une erreur, une suggestion ? Rendez-vous sur le dépôt GitHub !