Wstępnie zdefiniować kolory dla terminala?

13

Próbowałem sobie przypomnieć, jak mogłem wstępnie zdefiniować kolory w .bashrcpliku, aby można je było na przykład wywoływać ${RED}.

Nie pamiętam, czy to był właściwy sposób, ale jeśli coś pamiętam, to było coś takiego;

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

inny, o którym pamiętam, był używany, functionwięc można go było użyć w dowolnym miejscu i czasie. Miałem plik pokazujący, jak to zrobić, ale zgubiłem ten plik, który pokazał, jak to zrobić, i nie pamiętam, jak to działa.

souravc
źródło

Odpowiedzi:

12

Możesz zdefiniować funkcję w ~/.bashrcnastępujący sposób

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

Źródło ~/.bashrcjako . ~/.bashrclub otwórz nowy terminal i spróbuj.

wprowadź opis zdjęcia tutaj

Możesz także pisać w kolorze, pisząc coś na terminalu, używając echolub printfw następujący sposób,

wprowadź opis zdjęcia tutaj

souravc
źródło
To wydaje się być bardziej przyjaznym i czystszym sposobem na zrobienie tego.
4
declare -r RED='\033[0;31m'
declare -r GREEN='\033[0;32m'
declare -r NC='\033[0m'
Eran Ben-Natan
źródło
3

Być może widziałeś $'...'składnię, która powoduje, że powłoka interpretuje sekwencje odwrotnego ukośnika:

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

Kolejny sposób to zrobić, używając 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

Możesz połączyć je z funkcjami otoki w odpowiedzi souravc; nie będziesz potrzebować -e.

deltab
źródło