Terminal Linux PS1 prompt string

Très simple, il suffit de modifier la variable, ici on s'intéressera uniquement à PS1, car c'est exactement la même chose pour PS2,PS3 et PS4, et c'est moins utile.
Pour modifier la variable le temps de la session (jusqu'à ce que l'on ferme le terminal ou l'émulateur), on utilise la commande « export ». Exemple :

$ export PS1="MON NOUVEAU PROMPT $ "

C'est très pratique pour tester les valeurs de PS1 d'autres personnes !
Pour que cela soit valable pour chaque session, il faut sauvegarder la ligne (sans le « export ») dans le fichier « .bashrc » du répertoire de l'utilisateur.
Si la ligne « PS1="..." » existe déjà, il suffit de la commenter en la précédent d'un dièse.

Et qu'est ce qu'on met dans cette variable ?

Dans cette variable, on va ajouter des caractères spéciaux (sorte de raccourcis toujours précédés d'un antislash « \ » ) pour afficher ce que l'on veut.
On peut également ajouter des commandes.
Voici une liste de caractères spéciaux :

Et la couleur alors ?

Pour cela, il faut utiliser les caractères spéciaux \e, \[, \].
Le structure pour une couleur est : \e[<gras>;<couleur ou fond>m
Les codes couleurs utilisés comportent 2 éléments, le premier indique si le texte doit être en gras (0 ou 1) et le second le code couleur (30 à 37 sans couleur de fond et 40 à 47 avec couleur de fond).
Voici une illustration des codes couleurs :

Couleur du terminal linux ubuntuCouleur du terminal linux ubuntu
 

Par exemple si l'on veut un jaune, gras, sans fond, cela donnera : « \e[1;33m », et tout ce qui suivra sera dans cette couleur.
Pour que l'utilisation de la couleur s'arrête, il faut utiliser le code suivant : « \e[0m ».

Enfin, chaque code couleur est un code nom imprimable, il faut donc l'encadrer par les caractères adéquat : \[ et \]. Cela permet de spécifier à bash que ce n'est pas des caractères imprimables, et ça évite des soucis lors du calcul de la longueur de chaîne.
Voici le prompt que j'utilise :

PS1="\[\e[1;31m\]${debian_chroot:+($debian_chroot)}\u\[\e[1;34m\]@\[\e[1;32m\]\h\[\e[1;34m\]:\[\e[1;33m\]\w\[\e[1;34m\]:\[\e[0;36m\][\j]\[\e[0m\]\$ "

Vous pouvez l'essayer avec la commande « export » :

$ export PS1="\[\e[1;31m\]${debian_chroot:+($debian_chroot)}\u\[\e[1;34m\]@\[\e[1;32m\]\h\[\e[1;34m\]:\[\e[1;33m\]\w\[\e[1;34m\]:\[\e[0;36m\][\j]\[\e[0m\]\$ "

Pour revenir à votre version vous pouvez soit fermer le terminal et le relancer, soit utiliser la commande « source » si vous avez déjà renseigné la variable PS1 :

$ source ~/.bashrc

À noter que cette partie ${debian_chroot:+($debian_chroot)} n'est utile que pour les utilisateurs de debian et ses dérivés (Ubuntu par exemple). C'est utile si vous utilisez la commande « chroot » pour savoir où vous en êtes (chroot ou non).

Pour les plus curieux, voici le script permettant d'afficher les codes couleurs :

#!/bin/bash

NC='\e[0m' # No Color

# normal

for i in {30..37}

do

    color="\e[0;${i}m" # normal

    printf " ${color}0;${i}${NC}"

done

echo

# bold

for i in {30..37}

do

    color="\e[1;${i}m" # bold

    printf " ${color}1;${i}${NC}"

done

echo

# normal with background

for i in {40..47}

do

    color="\e[0;${i}m" # normal

    printf " ${color}0;${i}${NC}"

done

echo

# bold with background

for i in {40..47}

do

    color="\e[1;${i}m" # bold

    printf " ${color}1;${i}${NC}"

done

echo

Un peu de couleur dans votre ls

Lorsque l'on liste le contenu d'un répertoire ( commande « ls »), différentes couleurs apparaissent en fonction du type de fichier.
Il est également possible de personnaliser ces couleurs.
Pour cela, il vous faut déjà créer l'alias suivant (à placer dans le fichier ~/.bashrc) :

alias ls="ls --color"

Cela permet d'ajouter de la couleur dans la commande « ls » de base.
Ensuite on va utiliser la commande « dircolors » pour générer le fichier d'association des couleurs.

$ dircolors -p > ~/.ls_colors

Ce fichier contiens un code couleur pour un ou plusieurs types de fichiers et un ou plusieurs codes couleur pour les extensions choisies.
Vous pouvez dès à présent modifier les couleurs comme bon vous semble.
Pour cela vous pouvez vous référer aux codes couleur spécifiés plus haut, sinon le fichier rappelle les valeurs des codes en commentaire.
Vous pouvez tester vos modifications en tapant :

$ eval `dircolors ~/.ls_colors`

$ ls

Si vous êtes satisfait du résultats, il suffit d'ajouter cette commande à votre fichier ~/.bashrc :

eval `dircolors ~/.ls_colors`