Prédéfinir les couleurs du terminal?

13

J'essayais de me rappeler comment je pouvais prédéfinir les couleurs à l'intérieur du .bashrcfichier afin qu'elles puissent être appelées quand je le fais ${RED}par exemple.

Je ne me souviens pas si c'était la bonne façon de le faire, mais c'était quelque chose comme ça si je me souviens;

NC="\033[0;0;0m"      # no color or formatting
RED="\033[1;49;91m"   # color red
BLU="\033[1;49;94m"   # color blue
GRN="\033[1;49;32m"   # color green

un autre dont je me souviens, utilisait functiondonc il pouvait être utilisé à tout moment et n'importe où. J'avais un fichier me montrant comment faire cela mais j'ai perdu ce fichier qui montrait comment le faire, et je ne me souviens pas comment ça se passe.

souravc
la source

Réponses:

12

Vous pouvez définir une fonction dans votre ~/.bashrccomme suit

showred(){
    export RED='\033[1;49;91m'
    export NC='\033[0;0;0m'
    echo -e $RED"$@"$NC
}

Source ~/.bashrcas . ~/.bashrcou ouvrez un nouveau terminal et essayez.

entrez la description de l'image ici

Vous pouvez également écrire en couleurs tout en écrivant quelque chose sur le terminal en utilisant echoou printfcomme suit,

entrez la description de l'image ici

souravc
la source
Cela semble être une façon plus conviviale et plus propre de le faire.
4
declare -r RED='\033[0;31m'
declare -r GREEN='\033[0;32m'
declare -r NC='\033[0m'
Eran Ben-Natan
la source
3

Vous avez peut-être vu la $'...'syntaxe, qui oblige le shell à interpréter les séquences de barre oblique inverse:

NC=$'\e[0m'       # no color or formatting
RED=$'\e[1;31m'   # color red
GRN=$'\e[1;32m'   # color green
BLU=$'\e[1;34m'   # color blue

Une autre façon de le faire, en utilisant tput :

NC=$(tput sgr0)                  # no color or formatting
RED=$(tput bold; tput setaf 1)   # color red
GRN=$(tput bold; tput setaf 2)   # color green
BLU=$(tput bold; tput setaf 4)   # color blue

Vous pouvez les combiner avec les fonctions wrapper dans la réponse de souravc; vous n'aurez pas besoin -e.

deltab
la source