Il existe un certain nombre de didacticiels / publications en ligne (par exemple, http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) sur la façon de personnaliser votre invite dans bash en définissant PS1
. Existe-t-il un moyen de personnaliser la couleur / gras de la commande que je tape?
En d'autres termes, à titre d'exemple, disons que je voulais une invite verte, une commande bleue audacieuse, puis une sortie dans les couleurs par défaut. Dans l'exemple ci-dessous, je sais déjà comment faire " joe>
" apparaître en vert, bleu, gras, quelle que soit la configuration PS1
. Mais existe-t-il un moyen de faire en sorte que le git status
spectacle soit aussi audacieux par exemple?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
preexec() { printf '\e[0m' }
Réponses:
Vous devez laisser une couleur après la PS1 (la démarrer après
>
dans votre exemple), puis utiliser le bashDEBUG
trap pour effacer la couleur avant l'exécution de votre commande (mais après avoir appuyé sur Entrée dans votre shell. Essayez quelque chose comme ceci :la source
ls --color=always
colorée)?^[(B^[[m
). Cela ne se produit cependant que sur certains systèmes: j'ai testé cela sur deux systèmes, tous deux exécutant Ubuntu 12.04 LTS, et un seul d'entre eux avait l'interférence.Pour être complet, voici comment définir une couleur d'invite et la couleur d'entrée de ligne de commande dans bash. Mettez ces lignes dans votre
.bashrc
.Le piège DEBUG, comme suggéré par Chris Down , est utilisé pour réinitialiser les attributs de texte. Il est destiné au débogage, mais il est également utile d'exécuter du code avant d'exécuter la commande tapée par l'utilisateur .
Dans le paramètre d'invite:
\[…\]
est utilisé autour des séquences d'échappement pour dire à bash qu'ils n'utilisent aucun espace d'écran (sans eux, l'écran se brouille lorsque bash doit redessiner l'invite).\e[…m
où…
est un nombre, ou plus généralement une séquence de nombres séparés par des points-virgules, est une séquence d'échappement envoyée au terminal pour affecter la couleur et les autres attributs du texte suivant. Par exemple,1;34
définit un bleu gras;0;32
réinitialise tous les attributs, puis passe la couleur au vert. Ajustez au goût.\w\$
imprimer le répertoire courant et$
ou#
. Vous pouvez bien sûr changer cela en ce que vous voulez et insérer des changements d'attribut de texte entre les deux si vous le souhaitez.la source
J'apprends les commandes BASH et je suis assis ici à jouer avec les commandes de couleur dans ma version. J'ai trouvé cette solution:
En utilisant cette commande:
Déconstruire: PS1 =: démarre la commande PS1
'': contient la commande entre guillemets simples (donc BASH ne pense pas que ce soit une commande pour elle)
\: chaque commande individuelle commence par ceci
[]: contient chaque commande
\ e (peut également être \ 033 un caractère d'échappement ASCII): démarre une commande de couleur
La commande color précède la chose à laquelle elle s'applique.
[\ e [0; 36m]: cyan
\ h: nom d'hôte
'>': imprimé après le nom d'hôte
[\ e [0; 31m]: rouge
Apparemment, la commande rouge à la fin rend l'entrée rouge. Changez juste les couleurs à votre goût et c'est ce que vous cherchez.
De plus, ce site m'a un peu aidé:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
Ma version: GNU bash, v. 4.2.46
Prends soin de toi,
Belette
la source