Bash : personnalisation de l’invite.

L’invite est le texte qui est présent dans le terminal avant chaque commande. Celui par défaut ressemble à celle la:
[ [email protected] ~]$

Avec entre crochets le nom d’ [email protected] nom de la machine, un espace et le dossier courant. Puis un "$" montrant que vous êtes connecté en utilisateur normal. Si vous êtes connecté en tant que root ce ne sera plus "$" mais "#".

Comment personnaliser cette invite ?

La variable d’environnement PS1 permet de définir le format de l’invite.La variable PS2 permet de modifier l’invite de continuation (celle qui apparait quand le shell attend d’autres instructions, par defaut ">").

Pour la mise en forme nous disposons de caractères spéciaux :

L’invite par défaut a cette forme :
[ [email protected] h W]$

  • u : nom de l’utilisateur.

    • h : nom de la machine.
    • W : nom du dossier courant.
    • $ : affiche $ pour un utilisateur et # pour root.

    En voici d’autres :

  • w : chemin complet du répertoire de travail.

    • d : date format texte ("sam. janv. 31").
    • A : heure format 24h sans secondes.
    • t : heure format 24h avec les secondes.
    • T : heure format 12h avec les secondes.
    • @ : heure format 12H sans secondes.
    • D{%d-%m-%Y %H:%M:%S%z} : Date et heure dans un format personnalisable (ici jour-mois-année sur 4 chiffres heure:minute:seconde fuseau horaire).

    /! Attention la date et l’heure sont celles lors de l’apparition du prompt! L’heure ne défile pas!

  • $? : code de retour de la dernière commande (0 si OK, 1 si erreur).

    • commande_ou_fonction : lance la commande ou fonction.
    • j : nombre de tache en cours dans le terminal (pratique si vous lancez des tâches en arrière plan).
    • : le numéro de la commande.

    • v : version de bash.
    • n : nouvelle ligne.
      Et maintenant la couleur!

    On peut mettre en couleur l’invite et les commandes qui suivent.

    Avec le code "e[0;34m" la suite du texte sera en couleur. Il suffit de remplacer "0;34" par le code couleur voulu. Pour définir la fin de la mise en couleur : "e[0m". Si vous ne mettez pas de fin, toute la suite sera en couleur (même les résultats des commandes).

    Codes couleurs :

  • Noir 0;30

    • Gris foncé 1;30
    • Bleu 0;34
    • Bleu clair 1;34
    • Vert 0;32
    • Vert clair 1;32
    • Cyan 0;36
    • Cyan clair 1;36
    • Rouge 0;31
    • Rouge clair 1;31
    • Violet 0;35
    • Violet clair 1;35
    • Brun 0;33
    • Jaune 1;33
    • Gris clair 0;37
    • Blanc 1;37

    En fait, le premier nombre correspond au type de la couleur : 0 foncé, 1 clair, 4 souligné, 7 fond, 9 barré.

    Et des exemples d’invite :

    export PS1=" [email protected] h A> "
    [email protected] 14:13>
    Nom_d’ [email protected] _de_la_machine heure>

    export PS1=’e[0;31m [email protected] h e[0;35mw > e[1;34m’
    [email protected] /home >
    Affichera le nom d’utilisateur et le nom de machine en rouge, le dossier courant en violet et le reste de la commande en bleu.

    export PS1=’ [email protected] h [ps ax | wc -l(j)] $ ‘
    [email protected] [109(0)] $
    Nom_d’ [email protected] _de_la_machine [Commande_pour_compter_le_nombre_de_processus (tâches_en_arrière_plan)] $

    Pour sauvegarder l’invite :

    Pour modifier l’invite, il suffit de rentrer dans le terminal :

    export PS1=" Ce_que_vous_voulez_comme_invite "

    Mais dans ce cas, l’invite ne sera modifiée que pour le terminal courant.

    Pour le sauvegarder de façon définitive, il suffit de rajouter :

    PS1=" Ce_que_vous_voulez_comme_invite "

    dans le fichier ~/.bashrc.

    Autres astuces :

    D’autres articles sur génération-linux ont déjà parlé de personnalisation du terminal, je vous invite à les lire (ou relire 😉 ) :

    $PATH, qu’est-ce que c’est, comment changer les dossiers par défaut ?
    Une astuce tres pratique pour le terminal : ajouter un alias
    Marre de votre terminal terne et sans vie?

    Je vous conseille aussi la lecture de Bash, le livre de recettes par Carl Albing, JP Vossen & Cameron Newham , édition qui m’a aidé pour cet article et beaucoup d’autres choses.