Le blog de Genma
Vous êtes ici : Accueil » Informatique & Internet » GNU/Linux, Logiciels Libres » Prompt coloré pour son shell

Prompt coloré pour son shell

D 5 septembre 2016     H 09:00     A Genma     C 1 messages   Logo Tipee

TAGS : Planet Libre

J’utilise plusieurs connexions en même temps à différentes machines en même temps via ssh, parfois avec le même nom d’utilisateur et il est difficile de s’y retrouver. Certes, j’ai à chaque fois genma@nom_de_la_machine dans le prompt mais je cherchais à avoir quelque chose de plus visuel rapidement que d’avoir à lire le nom de la machine (car il m’est arrivé de ne pas taper la bonne commande pour la bonne machine...)

D’où l’idée d’avoir un prompt en couleur selon l’utilisateur et /ou la machine. Attention, ce ne sera que le prompt, pas les commandes en elle-mêmes. A la fin du fichier .bashrc, on ajoute les lignes suivantes :

Couleur bleu

export PS1=“\[\033[38;5;25m\]\u@\[$(tput sgr0)\]\[\033[38;5;24m\]\h:\w\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]”

Donnera un genma@nomachine : $

où ~ est le dossier courant (ici le /home/genma)

Couleur verte

export PS1=“\[\033[38;5;28m\]\u@\h:\w\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]”

Couleur rouge (pour root par exemple)

export PS1=“\[\033[38;5;160m\]\u@\h:\w\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]”

On peut ajouter d’autres informations comme la date et l’heure, etc. (principe du prompt)

Pour avoir d’autres couleurs et générer sa ligne qui va bien pour le fichier .bashrc (car c’est une syntaxe pas compréhensible par l’humain que je suis) je vous recommande le site http://bashrcgenerator.com/.

Depuis que j’ai fait ça, j’ai associé une couleur par machine et par utilisateur et je ne me trompe plus.

1 Messages

  • Perso j’ai décommenté la ligne
    force_color_prompt=yes

    et j’ai commenté la variable PS1 qui va avec

    if [ "$color_prompt" = yes ]; then
        #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

    Pour le remplacer par mon petit prompt perso :

    PS1='${debian_chroot:+($debian_chroot)}\[\033[00m\]\[\033[34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;35m\]\w\n \[\033[01;31m\]> \[\033[34m\]'

    Du coup pour la petite explication :
    ${debian_chroot:+($debian_chroot) ça change pas
    \[\033[00m\]\[\033[34m\]\u ça met le user en bleu foncé
    \[\033[00m\]@ ça garde le @ en blanc
    \[\033[01;32m\]\h ça met l’host en vert clair (pas fluo, faut pas déconner quand même)
    \[\033[00m\]: les 2 points ( :) toujours en blanc
    \[\033[01;35m\]\w le répertoire courant en violet clair
    \n un petit saut de ligne parce que.. parce que ! (en vrai sur les petits écrans ça laisse toute la ligne pour la commande quand on est dans /toto/titi/tata/tutu/monDossierSecret)
    /anticonstitutionnellement)
    \[\033[01;31m\]> un espace et un prompt avec un caractère supérieur (j’aime bien les prompt des interpréteurs genre python, etc..)
    \[\033[34m\] et enfin la commande en bleu clair
    ça donne quelque chose comme ça : https://framapic.org/dmrq7IgNzYx9/h...

    J’avais une variante avec des tabulations pour afficher l’heure/date en fin de première ligne mais en fonction de la taille du terminal ça pouvait arriver sur la deuxième ligne et c’était tout moche.