Você pode adicionar cor ao seu terminal Linux usando configurações especiais de codificação ANSI, seja dinamicamente em um comando de terminal ou em arquivos de configuração, ou você pode usar temas prontos no seu emulador de terminal. De qualquer forma, o texto nostálgico verde ou âmbar em uma tela preta é totalmente opcional. Este artigo demonstra como pode tornar o Linux tão colorido (ou monocromático) quanto quiser.
Capacidades do terminal
Sistemas modernos normalmente por defeito para pelo menos xterm-256color, mas se tentar adicionar cor ao seu terminal sem sucesso, deve verificar a sua configuração TERM.
Histórico, os terminais Unix eram literalmente: pontos físicos no ponto final literal (terminação) de um sistema de computador partilhado onde os utilizadores podiam digitar comandos. Eles eram únicos das máquinas de teletipo (e é por isso que ainda temos /dev/tty dispositivos no Linux hoje em dia) que eram frequentemente usados para emitir comandos remotamente. Os terminais tinham monitores CRT embutidos, para que os usuários pudessem sentar em um terminal em seu escritório para interagir diretamente com o mainframe. Os monitores CRT eram caros – tanto para fabricar quanto para controlar; era mais fácil ter um computador cuspindo texto ASCII bruto do que se preocupar com o anti-aliasing e outras gentilezas que os computadores modernos tomam como garantidas. No entanto, os desenvolvimentos em tecnologia aconteceram rapidamente mesmo assim, e rapidamente se tornou evidente que à medida que novos terminais de exibição de vídeo eram projetados, eles precisavam de novos recursos para estarem disponíveis em uma base opcional.
Por exemplo, o novo VT100 lançado em 1978 suportava a cor ANSI, então se um usuário identificasse o tipo de terminal como vt100, então um computador poderia fornecer uma saída colorida, enquanto um dispositivo serial básico poderia não ter essa opção. O mesmo princípio se aplica hoje, e é definido pela variável de ambiente TERM. Você pode verificar sua definição da TERM com echo:
$ echo $TERM
xterm-256color
O obsoleto (mas ainda mantido em alguns sistemas no interesse da compatibilidade retroativa) /etc/termcap definiu as capacidades dos terminais e impressoras. A versão moderna é terminfo, localizado em /etc ou /usr/share, dependendo da sua distribuição. Estes ficheiros listam funcionalidades disponíveis em diferentes tipos de terminais, muitos dos quais são definidos por hardware histórico: existem definições para vt100 até vt220, bem como para emuladores de software modernos como o xterm e Xfce. A maioria dos softwares não se importa com o tipo de terminal que você está usando; em raros casos, você pode receber um aviso ou erro sobre um tipo de terminal incorreto ao fazer login em um servidor que verifica se há recursos compatíveis. Se o seu terminal estiver definido para um perfil com muito poucos recursos, mas você sabe que o emulador que você usa é capaz de mais, então você pode mudar sua configuração definindo a variável de ambiente TERM. Você pode fazer isso exportando a variável TERM em seu arquivo de configuração ~/.bashrc:
export TERM=xterm-256color
Salve o arquivo, e recarregue suas configurações:
$ source ~/.bashrc
Códigos de cores ANSI
Terminais modernos herdaram seqüências de escape ANSI para recursos “meta”. Estas são seqüências especiais de caracteres que um terminal interpreta como ações em vez de caracteres. Por exemplo, esta sequência limpa a tela até o próximo prompt:
$ printf `3
Or you can use dircolors directly:
$ dircolors --print-database
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
If that looks cryptic, it’s because it is. The first digit after a file type is the attribute code, and it has six options:
- 00 none
- 01 bold
- 04 underscore
- 05 blink
- 07 reverse
- 08 concealed
The next digit is the color code in a simplified form. You can get the color code by taking the final digit of the ANSII code (32 for green foreground, 42 for green background; 31 or 41 for red, and so on).
Your distribution probably sets LS_COLORS globally, so all users on your system inherit the same colors. If you want a customized set of colors, you can use dircolors for that. First, generate a local copy of your color settings:
$ dircolors --print-database > ~/.dircolors
Editar a sua lista local como desejado. Quando você estiver satisfeito com suas escolhas, salve o arquivo. Suas configurações de cores são apenas uma base de dados e não podem ser usadas diretamente pelo ls, mas você pode usar dircolors para obter o código da shell que você pode usar para definir LS_COLORS:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
export LS_COLORS
Copiar e colar a saída no seu arquivo ~/.bashrc e recarregar. Alternativamente, você pode despejar essa saída diretamente no seu arquivo .bashrc e recarregar.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Você também pode fazer o Bash resolver .dircolors no lançamento, ao invés de fazer a conversão manualmente. Realisticamente, você provavelmente não vai mudar as cores frequentemente, então isso pode ser excessivamente agressivo, mas é uma opção se você planeja mudar muito o seu esquema de cores. No seu arquivo .bashrc, adicione esta regra:
] && eval "`dircolors --sh $HOME/.dircolors`"
Se você tiver um arquivo .dircolors no seu diretório home, o Bash o avalia no momento do lançamento e define LS_COLORS de acordo.
Cor
Cores no seu terminal são uma maneira fácil de dar a si mesmo uma referência visual rápida para informações específicas. No entanto, talvez você não queira se apoiar muito nelas. Afinal, as cores não são universais, então se alguém usar o seu sistema, pode não ver as cores da mesma forma que você vê. Além disso, se você usar uma variedade de ferramentas para interagir com computadores, você também pode descobrir que alguns terminais ou conexões remotas não fornecem as cores que você espera (ou cores de todo).
Os avisos à parte, cores podem ser úteis e divertidas em alguns fluxos de trabalho, então crie uma base de dados .dircolor e personalize-a de acordo com o conteúdo do seu coração.