Предопределить цвета для терминала?

13

Я пытался вспомнить, как я мог предварительно определить цвета внутри .bashrcфайла, чтобы они могли вызываться, когда я делаю, ${RED}например.

Я не могу вспомнить, был ли это правильный способ сделать это, но это было что-то вроде этого, если я помню;

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

другой, насколько я помню, использовал, functionчтобы его можно было использовать в любое время и в любом месте. У меня был файл, показывающий мне, как это сделать, но я потерял этот файл, который показал, как это сделать, и я не могу вспомнить, как это происходит.

souravc
источник

Ответы:

12

Вы можете определить функцию в вашем ~/.bashrcследующем

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

Источник , ~/.bashrcкак . ~/.bashrcи открыть новый терминал и попробовать.

введите описание изображения здесь

Также вы можете писать в цвете, когда пишете что-то на терминале, используя echoили printfкак следует,

введите описание изображения здесь

souravc
источник
Это кажется более дружественным и более чистым способом сделать это.
4
declare -r RED='\033[0;31m'
declare -r GREEN='\033[0;32m'
declare -r NC='\033[0m'
Эран Бен-Натан
источник
3

Возможно, вы видели $'...'синтаксис, который заставляет оболочку интерпретировать последовательности обратной косой черты:

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

Еще один способ сделать это, используя 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

Вы можете комбинировать их с функциями-обертками в ответе souravc; Вам не нужно будет -e.

deltab
источник