Pra-tentukan warna untuk Terminal?

13

Saya mencoba mengingat bagaimana saya dapat menentukan warna di dalam .bashrcfile sehingga mereka dapat dipanggil ketika saya lakukan ${RED}misalnya.

Saya tidak ingat apakah ini cara yang tepat untuk melakukannya, tetapi ini adalah sesuatu yang saya ingat;

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

lain saya ingat, sedang menggunakan functionsehingga bisa digunakan kapan saja di mana saja. Saya memang memiliki file yang menunjukkan kepada saya bagaimana melakukan ini tetapi saya kehilangan file ini yang menunjukkan bagaimana melakukannya, dan saya tidak ingat bagaimana kelanjutannya.

souravc
sumber

Jawaban:

12

Anda dapat mendefinisikan fungsi di Anda ~/.bashrcsebagai berikut

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

Sumber ~/.bashrcsebagai . ~/.bashrcatau buka terminal baru dan coba.

masukkan deskripsi gambar di sini

Anda juga dapat menulis dalam warna sambil menulis sesuatu di terminal menggunakan echoatau printfsebagai berikut,

masukkan deskripsi gambar di sini

souravc
sumber
Ini sepertinya cara yang lebih ramah dan bersih untuk melakukan ini.
4
declare -r RED='\033[0;31m'
declare -r GREEN='\033[0;32m'
declare -r NC='\033[0m'
Eran Ben-Natan
sumber
3

Anda mungkin telah melihat $'...'sintaksisnya, yang menyebabkan shell menginterpretasikan urutan backslash:

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

Cara lain untuk melakukan ini, menggunakan 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

Anda dapat menggabungkan ini dengan fungsi wrapper dalam jawaban souravc; kamu tidak perlu -e.

deltab
sumber