O problema básico é que watch
e tree
usam informações diferentes para obter as cores:
-
O programa
watch
interpreta sequências de escape padrão (ECMA-48) para especificar atributos de vídeo. Isso significa 8 cores, além de negrito, piscar, sublinhar, inverter e itálico. Ele usa (n) curses para exibir as informações, fazendo com que o resultado dependa do banco de dados do terminal -
O programa
tree
imita o GNUls
, usando a variável de ambienteLS_COLORS
. Que usa a variável de ambienteTERM
(que amaldiçoa e a maioria dos aplicativos de terminal usa para identificar uma entrada no banco de dados do terminal) para selecionar um conjunto de seqüências de escape personalizadas, que não necessariamente têm relação com as descrições do banco de dados do terminal.
Com algum trabalho, você pode fazer essa correspondência, por exemplo, gerando um LS_COLORS
adequado para uma determinada entrada de terminal. Aparentemente ninguém fez isso. E como o conteúdo de LS_COLORS
incompleto (abrangendo apenas uma pequena fração de uma descrição de terminal: sem teclas de função, sem movimento de cursor, sem generalidade), não há sentido em gerar uma entrada de terminal de < strong> LS_COLORS
.
Se tree
usar 256 cores, watch
poderá não entender esses códigos (uma alteração recente aborda uma parte desse problema para o processamento top
mas não foi adaptado para watch
- aguarde um pouco. watch
usa (n) curses para gerenciar a tela, o que torna necessário (para watch
) converter códigos de escape em chamadas curses.
Leitura adicional: