O problema básico é que watch e tree usam informações diferentes para obter as cores:
-
O programa
watchinterpreta 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
treeimita 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: