Cor nomes de arquivos específicos (não extensões) na saída 'ls' como Makefile ou CMakeLists.txt

0

Atualmente, estou trabalhando em um projeto C ++. Eu estou usando o CMake como um sistema de compilação e eu adoraria ter todos os arquivos relacionados ao CMake (como CMakeLists.txt ) coloridos de forma diferente na saída do comando ls . Desta forma eu poderia facilmente distingui-los dos arquivos de código fonte.

Eu estava tentando usar dircolors e editar diretamente $LS_COLORS env var. Eu falhei em ambos os casos. Parece que essas soluções fornecem apenas uma maneira de colorir alguns arquivos específicos do Linux (por exemplo, links) ou extensões selecionadas.

Para resumir, foi o que eu fiz:

OLD_LS_COLORS=$LS_COLORS # Backup
export LS_COLORS="${LS_COLORS}CMakeLists.txt=00;36:" # Adding it at the beginning of the list also fails
ls # No colors at all
export LS_COLORS=$OLD_LS_COLORS # Cleanup
dircolors -p > ~/.dir_colors
echo "CMakeLists.txt 01;33" >> ~/.dir_colors
eval 'dircolors ~/.dir_colors' # Throws "unrecognized keyword CMakeLists.txt"

A solução alternativa para meu problema seria colorir os arquivos de origem ( .hxx , .cxx ), mas gostaria de apenas colorir os arquivos CMake. Por outro lado, eu poderia apenas colorir os arquivos .txt e .cmake , mas então todos os arquivos de texto seriam coloridos dessa maneira.

Colorir um Makefile (um arquivo sem extensão) em ls output seria um ótimo bônus.

Estou usando o Debian 9 com bash 4.4.12 e ls 8.26.

Obrigado antecipadamente.

    
por Maciej Stanek 08.08.2018 / 10:54

1 resposta

0

Não sei se você pode fazer isso com ls diretamente. (Mas pode ser ...)

Minha ideia seria canalizar a saída de ls para sed, que pode colorir suas correspondências de regex.

Há um bom snippet que faz isso: link

Você pode escrever uma cadeia de pipes que corresponda a todos os arquivos cmake: ls | highlight blue CMakeLists.txt | highlight blue foobar.baz ... (e crie um alias para isso)

Mas esta é obviamente uma solução alternativa.

Minha escolha pessoal seria usar compilações fora da fonte e manter os arquivos cmake separados em um certo grau. Mas isso não é uma resposta à sua pergunta e pode não ser possível na estrutura do seu projeto ...

    
por 08.08.2018 / 12:14