Eu passo a maior parte do meu tempo trabalhando em ambientes Unix e usando emuladores de terminal. Tento usar cores na linha de comando, porque as cores tornam a saída mais útil e intuitiva.
Que opções existem para adicionar cor ao meu ambiente terminal? Que truques você usa? Que armadilhas você já encontrou?
Infelizmente, o suporte a cores varia dependendo do tipo de terminal, sistema operacional, configuração TERM, utilitário, implementações de bugs, etc.
Aqui estão algumas dicas da minha configuração, depois de muita experimentação:
Eu tendo a definir TERM=xterm-color
, que é suportado na maioria dos hosts (mas não em todos).
Eu trabalho em vários hosts diferentes, diferentes versões de SO, etc. Utilizo tudo desde macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux e FreeBSD. I'estou tentando manter as coisas simples e genéricas, se possível.
Eu faço um monte de trabalho utilizando o GNU screen
, o que adiciona outra camada de diversão.
Muitos SOs definem coisas como dircolors
e por padrão, e eu não'não quero modificar isto em uma centena de hosts diferentes. Então eu tento ficar com os padrões. Ao invés disso, eu ajustei a configuração de cores do meu terminal's.
Use cores para alguns comandos [Unix][debian] (ls
, grep
, less
, vim
) e o prompt Bash. Estes comandos parecem usar o padrão "ANSI seqüências de escape". Por exemplo:
alias less='less --RAW-CONTROL-CHARS'
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
I'vou postar o meu .bashrc
e responder a minha própria pergunta Jeopardy Style.
http://www.debian.org/doc/manuals/reference/ch09.en.html#_colorized_commands
Aqui estão algumas coisas que você pode fazer:
**Editores + Código***
Muitos editores têm suporte de sintaxe de destaque. O vim
e o emacs
têm-no ligado por padrão. Você também pode ativá-lo em nano
.
Você também pode destacar o código de sintaxe no terminal usando Pygments como uma ferramenta de linha de comando.
**grep***
grep --color=auto
destaca todos os jogos. Você também pode utilizar export GREP_OPTIONS='--color=auto'
para torná-lo persistente sem um pseudônimo. Se você usar --color=always
, it'll usar cor mesmo quando piping, o que confunde as coisas.
**ls***
ls --color=always``
Cores especificadas por:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(dica: "corantes" pode ser útil)
**PS1*** Você pode definir o seu PS1 (shell prompt) para usar cores. Por exemplo:
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
Vai produzir um PS1 como:
[amarelo]lucas@ubuntu: [vermelho]~[normal]$
Podes ser muito criativo com isto. Como uma ideia:
PS1='\e[s\e[0;0H\e[1;33m\h \t\n\e[1;32mThis is my computer\e[u[\u@\h: \w]\$ '
Coloca uma barra no topo do seu terminal com algumas informações aleatórias. (Para melhores resultados, utilize também alias clear="echo -e '\e[2J\n'"
.)
**Encerramento de Sequências de Fuga***
Se algo está preso na cor de saída quando você não'não quer, eu uso esta linha sed
para tirar as sequências de fuga:
sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
Se você quiser uma experiência mais autêntica, você também pode se livrar de linhas começando com `\e[8m', que instrui o terminal a esconder o texto. (Não é amplamente suportado.)
sed "s/^\[^[8m.*$//gi"
Note também que esses ^[s devem ser reais, literais ^[s. Você pode digitá-los pressionando ^V^[ em bash, ou seja, Ctrl + V, Ctrl + [.
Já foram mencionados grep
e ls
, se você quiser muito mais cores confira Generic Coloriser, seu propósito inicial era colorir arquivos de log, mas logo de saída também coloriza ping
, traceroute
, gcc
, make
, netstat
, diff
, last
, ldap
, e cvs
.
It'é facilmente estendido se você conhece regexes. I'adicionou ps
e nmap
à lista (se você entrar no grc
I'ficará mais do que feliz em compartilhar os arquivos .conf para essas duas ferramentas)
(Btw, para instalá-lo via synaptic
, pacman
, e da mesma forma você pode ter mais sorte na busca de "grc")
Defina um prompt em negrito/cor-de-rosa. De cyberciti.biz e o 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 \$ "
I'também consegui encontrar configurações de cores que são amplamente suportadas, e que não't imprimem caracteres gobbledygook em ambientes antigos (mesmo FreeBSD4!), e parece funcionar bem se TERM=vt100, xterm, xterm-color. (Na sua maioria). Do meu .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