Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 23/04/2013, à 00:31

fnux

[Résolu] Comment modifier les couleurs du prompt via un fichier .sh ?

Bonjour tout le monde.

Bon, encore une fois je demande de l'aide avec l'utilisation de certaines commandes bash via un fichier script ".sh".

En effet, j'aimerai pouvoir changer la couleur du prompt à différents endroits lors de l'exécution d'un script ".sh" par exemple pour changer la couleur lorsque le script pose une question et attend une réponse.

Si j'utilise les commandes suivantes en ligne de commande :

echo "This is the default prompt"
export PS1="\[\033[01;31m\u@\h:\w\$ "
echo "This prompt is in red"
export PS1="\[\033[01;32m\u@\h:\w\$ "
echo "This prompt is in green"
export PS1="\[\033[01;33m\u@\h:\w\$ "
echo "This prompt is in yellow"
export PS1="\[\033[01;34m\u@\h:\w\$ "
echo "This prompt is in blue"
export PS1="\[\033[01;35m\u@\h:\w\$ "
echo "This prompt is in purple"
export PS1="\[\033[01;36m\u@\h:\w\$ "
echo "This prompt is in cian"
export PS1="\[\033[01;37m\u@\h:\w\$ "
echo "This prompt is in white"
export PS1="\[\033[0;29m\u@\h:\w\$ "
echo "This prompt is back to the default"

alors j'obtiens bien le résultat suivant

echo "This is the default prompt"
export PS1="\[\033[01;31m\u@\h:\w\$ "

echo "This prompt is in red"
export PS1="\[\033[01;32m\u@\h:\w\$ "

echo "This prompt is in green"
export PS1="\[\033[01;33m\u@\h:\w\$ "

echo "This prompt is in yellow"
export PS1="\[\033[01;34m\u@\h:\w\$ "

echo "This prompt is in blue"
export PS1="\[\033[01;35m\u@\h:\w\$ "

echo "This prompt is in purple"
export PS1="\[\033[01;36m\u@\h:\w\$ "

echo "This prompt is in cian"
export PS1="\[\033[01;37m\u@\h:\w\$ "

echo "This prompt is in white"
export PS1="\[\033[0;29m\u@\h:\w\$ "

echo "This prompt is back to the default"

Mais si je mets les mêmes commandes dans un fichier .sh (par exemple dans le fichier test-colors.sh ci-dessous) :

#!/bin/bash
# test-colors.sh
echo "This is the default prompt"
export PS1="\[\033[01;31m\u@\h:\w\$ "
echo "This prompt is in red"
export PS1="\[\033[01;32m\u@\h:\w\$ "
echo "This prompt is in green"
export PS1="\[\033[01;33m\u@\h:\w\$ "
echo "This prompt is in yellow"
export PS1="\[\033[01;34m\u@\h:\w\$ "
echo "This prompt is in blue"
export PS1="\[\033[01;35m\u@\h:\w\$ "
echo "This prompt is in purple"
export PS1="\[\033[01;36m\u@\h:\w\$ "
echo "This prompt is in cian"
export PS1="\[\033[01;37m\u@\h:\w\$ "
echo "This prompt is in white"
export PS1="\[\033[0;29m\u@\h:\w\$ "
echo "This prompt is back to the default"
#

alors la commande sh test-colors.sh ne donne que :

fnux@DESK-130432:~$ sh test-colors.sh
This is the default prompt
This prompt is in red
This prompt is in green
This prompt is in yellow
This prompt is in blue
This prompt is in purple
This prompt is in cian
This prompt is in white
This prompt is back to the default
fnux@DESK-130432:~$ 

sans aucun changement de couleur ! hmm

Où est-ce que j'ai faux ?

Je suppose dans la syntaxe à utiliser dans le script, mais je n'ai rien trouvé à ce sujet.

Donc, encore une fois, merci d'avance de votre aide à un piètre débutant comme moi.

PS: C'est vraiment pas facile le bash! tongue

Dernière modification par fnux (Le 23/04/2013, à 18:42)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#2 Le 23/04/2013, à 10:04

pingouinux

Re : [Résolu] Comment modifier les couleurs du prompt via un fichier .sh ?

Re-bonjour,
Je pense que c'est parce que la variable PS1 n'est prise en compte que pour les commandes exécutées dans un terminal.
Avec ce fichier :

$ cat test-colors.sh
#!/bin/bash
# test-colors.sh
echo "This is the default prompt"
PS1="\e[01;31m"
echo -e "${PS1}This prompt is in red"
PS1="\e[01;32m"
echo -e "${PS1}This prompt is in green"
PS1="\e[01;33m"
echo -e "${PS1}This prompt is in yellow"
PS1="\e[01;34m"
echo -e "${PS1}This prompt is in blue"
PS1="\e[01;35m"
echo -e "${PS1}This prompt is in purple"
PS1="\e[01;36m"
echo -e "${PS1}This prompt is in cian"
PS1="\e[01;37m"
echo -e "${PS1}This prompt is in white"
PS1="\e[0;29m"
echo -e "${PS1}This prompt is back to the default"

tu devrais obtenir ce que tu veux avec

./test-colors.sh

ou

bash test-colors.sh

Hors ligne

#3 Le 23/04/2013, à 10:13

Bousky

Re : [Résolu] Comment modifier les couleurs du prompt via un fichier .sh ?

Petite remarque : tu mets bien « \[ » avant les séquences d'échappement dans le prompt, mais il faut aussi mettre « \] » après :

export PS1="\[\033[01;31m\]\u@\h:\w\$ "
                         ^^

PS1 ne sert qu'à l'invite de commande, ne la modifie pas pour autre chose. Si tu veux colorier ce que renvoie un script, utilise echo comme ça pour bash :

echo -e "\E[31mTexte en rouge\E[0m"

et comme ça pour sh :

echo "\033[31mTexte en rouge\033[0m"

Dernière modification par Bousky (Le 23/04/2013, à 10:15)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#4 Le 23/04/2013, à 18:41

fnux

Re : [Résolu] Comment modifier les couleurs du prompt via un fichier .sh ?

Re salut pingouinux et Bousky.

Bousky a écrit :

Petite remarque : tu mets bien « \[ » avant les séquences d'échappement dans le prompt, mais il faut aussi mettre « \] » après :

export PS1="\[\033[01;31m\]\u@\h:\w\$ "
                         ^^

PS1 ne sert qu'à l'invite de commande, ne la modifie pas pour autre chose. Si tu veux colorier ce que renvoie un script, utilise echo comme ça pour bash :

echo -e "\E[31mTexte en rouge\E[0m"

et comme ça pour sh :

echo "\033[31mTexte en rouge\033[0m"

Vraiment un grand MERCI à tous les deux pour vos explications claires et concises et aussi pour la différence de syntaxe entre sh et bash. smile

Donc je marque résolu, d'autant plus qu'avec votre participation active, j'ai pu faire un petit script sympa en couleur aussi bien pour sh que pour bash. C'est ici : http://forum.ubuntu-fr.org/viewtopic.ph … #p13301021

Dernière modification par fnux (Le 23/04/2013, à 18:43)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

Haut de page ↑