(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

87. Como mudar o padrão das cores do texto

ls, como mudar as cores

Será necessário dizer ao código do controlador do terminal que você quer outras cores como padrão. Não há uma maneira padrão de fazer isso, porém no caso do Linux, pode-se usar o programa setterm.

O "setterm" usa a informação no banco de dados do terminal para configurar os atributos. As seleções são feitas assim:

setterm -foreground black -background white -store

Onde o "-store" faz com que a mudança seja aplicada ao console que está sendo usado. Isto requer que o terminal atual ( variável de ambiente TERM ) seja descrito "bem o suficiente" no banco de dados do termcap. Se o setterm por alguma razão não funcionar corretamente, eis aqui algumas alternativas:

87.1 Xterm

ls, xterm Um desses xterms deve estar disponível e pelo menos um deles suporta cores.

xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4

onde 'color_xterm' suporta a versão de cor do 'ls'. Esta escolha em particular é parecida com as cores usadas num SGI.

87.2 Console virtual

console virtual Pode-se modificar o kernel de uma vez por todas, bem como prover um padrão de tempo de execução para os consoles virtuais com uma seqüência de escapes. Recomendo o programa de correção do kernel se você compilou o seu próprio kernel.

O arquivo fonte do kernel é /usr/src/linux/drivers/char/console.c por volta da linha 1940, onde deve-se modificar:

        def_color       = 0x07;   /* branco */
        ulcolor                 = 0x0f;   /* branco forte */
        halfcolor       = 0x08;   /* cinza */
como for apropriado. Usei branco no azul com
        def_color       = 0x17;   /* branco */
        ulcolor                 = 0x1f;   /* branco forte */
        halfcolor       = 0x18;   /* cinza */

Os números são os códigos de atribuição usados pela placa de vídeo em hexadecimal: o dígito mais significante ( o "1" nas cores exemplificadas acima ) é o fundo; o menos significante é a cor da letra. 0 = preto, 1 = azul, 2 = verde, 3 = cyan, 4 = vermelho, 5 = rosa, 6 = marrom/amarelo, 7 = branco. Some 8 ao número para obter cores "brilhantes". Observe que, na maioria dos casos, um fundo brilhante == caracteres que piscam, fundo enfadonho ( de sjlam1@mda023.cc.monash.edu.au ).

Pode-se fornecer também um novo padrão de tempo de execução para um console virtual, numa base por monitor com a seqüência não padrão ANSI ( encontrada pela procura de fontes do kernel )

        ESC [ 8 ]

a qual configura o padrão para as cores das letras e do fundo atuais. Depois, a palavra ( ou cadeia de caracteres ) Reset Attributes ( ESC [ m ) seleciona essas cores ao invés de preto e branco.

Será necessário realmente repercutir esta palavra para o console toda vez que você reiniciar. Dependendo no que você usa o seu Linux, pode-se fazer a modificação em vários lugares:

/etc/issue

Isto é onde o "Welcome to Linux xx.yy" é mostrado no Slackware, e é uma boa escolha para uma máquina que trabalha sozinha ( e provavelmente uma praga para os usuários que a acessam com telnet ). Este arquivo é criado na inicialização ( no Slackware no /etc/rc.d/rc.S; no Redhat no /etc/rc.d/rc.local), e você deve modificar as linhas para obter algo como:

  echo ""> /etc/issue
  echo Bem vindo ao Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue
para
  ESCAPE="<replace with a single escape character here>"
  echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
  echo Bem vindo ao Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue

Este código irá colocar o cursor no começo da linha, configurar a cor ( aqui branco no azul ), salvar esta seleção e limpar o resto da tela. A modificação fará efeito na próxima inicialização. Lembre-se de inserir o caracter escape de modo _literal_ no arquivo com o C-q no emacs ou o control-v no vi, uma vez que aparentemente o sh, usado para executar este roteiro, não compreende a sintaxe /033.

/etc/profile ou .profile

  if [ "$TERM" = "console" ]; then
      echo "\033[37;44m\033[8]" #
# ou use setterm.
      setterm -foreground white -background blue -store
  fi

/etc/login ou .login

  if ( "$TERM" == "console" ) then
    echo "\033[37;44m\033[8]"  
# ou use setterm.
      setterm -foreground white -background blue -store
  endif

87.3 Acesso remoto

acesso remoto Você deve ser capaz de usar o programa setterm como foi mostrado acima. Mais uma vez, isto requer que a máquina remota saiba o suficiente sobre o seu terminal, e que o emulador de terminal forneça as cores de suporte de entrada no sistema. Na minha opinião, a melhor emulação vt100 atualmente disponível para outras plataformas são:

  • MS-DOS: MS-Kermit ( livre, não é um produto da Microsoft )
  • Windows 95/NT: Kermit/95 ( shareware )
  • OS/2: Kermit/95 ( shareware ). Perceptível através das cores padrões do telnet e, pode ser adaptado localmente.

Veja http://www.columbia.edu/kermit/ para detalhes sobre Kermit.


Página seguinte Página anterior Índice