Прекарвам по-голямата част от времето си в работа в среда на Unix и използване на терминални емулатори. Опитвам се да използвам цвят в командния ред, защото цветът прави изхода по-полезен и интуитивен.
Какви възможности съществуват за добавяне на цвят в моята терминална среда? Какви трикове използвате вие? С какви капани сте се сблъсквали?
За съжаление, поддръжката на цвят варира в зависимост от типа на терминала, операционната система, настройката на TERM, обслужващата програма, грешните реализации и т.н.
Ето някои съвети от моята настройка, след много експерименти:
Обикновено задавам TERM=xterm-color
, което се поддържа от повечето хостове (но не от всички).
Работя на няколко различни хоста, с различни версии на операционната система и т.н. Използвам всичко от MacOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux и FreeBSD. Опитвам се да запазя нещата прости и общи, ако е възможно.
Извършвам много работа, като използвам GNU screen
, което добавя още едно ниво на забавление.
Много операционни системи задават неща като dircolors
и по подразбиране, а аз не'искам да променям това на сто различни хостове. Затова се опитвам да се придържам към настройките по подразбиране. Вместо това променям конфигурацията на цветовете на моя терминал'.
Използвайте цвят за някои Unix команди (ls
, grep
, less
, vim
) и за Bash подкана. Тези команди изглежда използват стандартните "ANSI escape sequences". Например:
alias less='less --RAW-CONTROL-CHARS'
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
Ще публикувам моя .bashrc
и ще отговоря на собствения си въпрос в стил Jeopardy.
Ето няколко неща, които можете да направите:
Редактори + Код
Много редактори имат поддръжка за подчертаване на синтаксиса. Vim
и emacs
го имат включено по подразбиране. Можете също така да го включите под nano
.
Можете също така да подчертавате синтаксиса на кода на терминала, като използвате Pygments като инструмент за командния ред.
grep
grep --color=auto
подчертава всички съвпадения. Можете също така да използвате export GREP_OPTIONS='--color=auto'
, за да го направите постоянен без псевдоним. Ако използвате --color=always
, той'ще използва цвят дори при изписване, което обърква нещата.
ls
ls --color=always
Цветове, зададени от:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(подсказка: dircolors
може да бъде от полза)
PS1 Можете да настроите PS1 (подкана на шел) да използва цветове. Например:
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
Ще се получи PS1 като:
[жълт]lucas@ubuntu: [red]~[normal]$
Можете да бъдете наистина креативни с това. Като идея:
PS1='\e[s\e[0;0H\e[1;33m\h \t\n\e[1;32mThis is my computer\e[u[\u@\h: \w]\$ '
Поставя лента в горната част на терминала ви с произволна информация. (За най-добри резултати използвайте и alias clear="echo -e '\e[2J\n\n'"
.)
Отстраняване на последователности за извеждане
Ако нещо е заседнало и извежда цвят, когато не искате, използвам този ред sed
, за да премахна последователностите за извеждане:
sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
Ако искате по-автентично изживяване, можете също така да се отървете от редовете, започващи с \e[8m
, които инструктират терминала да скрие текста. (Не се поддържа широко.)
sed "s/^\[^[8m.*$//gi"
Също така имайте предвид, че тези ^[s трябва да са действителни, буквални ^[s. Можете да ги въведете, като натиснете ^V^[ в bash, т.е. Ctrl + V, Ctrl + [.
grep
и ls
вече бяха споменати, ако искате много повече цветове, вижте Generic Coloriser, първоначалната му цел беше да оцветява лог-файлове, но веднага след пускането му той оцветява и ping
, traceroute
, gcc
, make
, netstat
, diff
, last
, ldap
и cvs
.
Лесно се разширява, ако познавате регексите. Добавих ps
и nmap
към списъка (ако се занимаваш с grc
, с удоволствие ще ти споделя .conf файловете за тези два инструмента)
(Btw, за да го инсталирате чрез synaptic
, pacman
и други подобни, може би ще имате повече късмет, ако потърсите "grc")
Задаване на удебелен/цветен текст. От cyberciti.biz и BashFAQ
# 'tput bold' will work regardless of the foreground and background colors.
# Place the tput output into variables, so they are only execd once.
bold=$(tput bold) # This could also be a color.
reset=$(tput sgr0)
export PS1="\u@\[$bold\]\h\[$reset\]:\w \$ "
Също така успях да намеря настройки на цветовете, които се поддържат широко и които не отпечатват gobbledygook символи в по-стари среди (дори FreeBSD4!), и изглежда работят добре, ако TERM=vt100, xterm, xterm-color. (В по-голямата си част). От моя .bashrc:
# Set some options, based on the OS
OS=`uname -s`
case "$OS" in
"SunOS" )
# Solaris ls doesn't allow color, so use special characters
LS_OPTS='-F'
alias ls='ls ${LS_OPTS}'
;;
"Linux" )
# GNU ls supports colors!
# See dircolors to customize colors
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"
# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP
export GREP_OPTIONS="--color=auto"
;;
"Darwin"|"FreeBSD")
# Most FreeBSD & Apple Darwin supports colors
export CLICOLOR=true
# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"
# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP
export GREP_OPTIONS="--color=auto"
;;
* )
echo "Unknown OS [$OS]"
;;
esac