Pokoloruj określone nazwy plików (nie rozszerzenia) w pliku `ls`, takim jak Makefile lub CMakeLists.txt

0

Obecnie pracuję nad projektem C ++. Używam CMake jako systemu kompilacji i chciałbym mieć wszystkie pliki związane z CMake (jak CMakeLists.txt ) w kolorze ls wyjście komendy. W ten sposób mogłem łatwo odróżnić je od plików kodu źródłowego.

Próbowałem użyć obu dircolors i edytuj bezpośrednio $LS_COLORS env var. Zawiodłem w obu przypadkach. Wydaje się, że te rozwiązania zapewniają jedynie sposób na kolorowanie niektórych plików specyficznych dla Linuksa (np. Linki) lub wybranych rozszerzeń.

Podsumowując, to właśnie zrobiłem:

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"

Obejściem mojego problemu byłoby pokolorowanie plików źródłowych ( .hxx, .cxx ) zamiast tego, ale chciałbym trzymać się tylko kolorowania plików CMake. Z drugiej strony mogłem po prostu kolorować .txt i .cmake pliki, ale wtedy wszystkie pliki tekstowe byłyby barwione w taki sposób.

Kolorowanie pliku Makefile (pliku bez rozszerzenia) w ls wyjście byłoby miłym bonusem.

Używam Debiana 9 z bash 4.4.12 i ls 8.26.

Z góry dziękuję.

Maciej Stanek
źródło

Odpowiedzi:

0

Nie wiem, czy możesz to zrobić ls bezpośrednio. (Ale może być ...)

Moim pomysłem byłoby wypuszczenie strumienia ls do sed, który może pokolorować dopasowania regex.

Jest ładny fragment kodu, który to robi: https://github.com/kepkin/dev-shell-essentials/blob/master/highlight.sh

Możesz napisać łańcuch rur, który pasuje do wszystkich plików cmake: ls | highlight blue CMakeLists.txt | highlight blue foobar.baz ... (i utwórz alias dla tego)

Ale jest to oczywiście obejście.

Moim osobistym wyborem byłoby użycie kompilacji spoza źródła i zachowanie do pewnego stopnia plików cmake. Ale to nie jest odpowiedź na twoje pytanie i może nie być możliwa w twojej strukturze projektu ...

Jounathaen
źródło