Pré-define cores para o Terminal?

13

Eu estava tentando lembrar como eu poderia pré-definir cores dentro do .bashrcarquivo para que elas pudessem ser chamadas quando eu fizer, ${RED}por exemplo.

Não me lembro se essa era a maneira certa de fazê-lo, mas era algo assim se me lembro;

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

outro, lembro-me, estava usando functionpara que pudesse ser usado a qualquer momento e em qualquer lugar. Eu tinha um arquivo me mostrando como fazer isso, mas perdi esse arquivo que mostrava como fazê-lo, e não me lembro como.

souravc
fonte

Respostas:

12

Você pode definir uma função no ~/.bashrcseguinte

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

Fonte ~/.bashrccomo . ~/.bashrcou abra um novo terminal e tente.

insira a descrição da imagem aqui

Além disso, você pode escrever em cores enquanto escreve algo no terminal usando echoou printfcomo a seguir,

insira a descrição da imagem aqui

souravc
fonte
Parece uma maneira mais amigável e limpa de fazer isso.
4
declare -r RED='\033[0;31m'
declare -r GREEN='\033[0;32m'
declare -r NC='\033[0m'
Eran Ben-Natan
fonte
3

Você pode ter visto a $'...'sintaxe, que faz com que o shell interprete as seqüências de barra invertida:

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

Outra maneira de fazer isso, usando 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

Você pode combiná-los com as funções de invólucro na resposta de souravc; você não vai precisar -e.

deltab
fonte