Jak koloryzować ukryte pliki na listach plików `ls`?

10

LS_COLORSzmienna środowiskowa pozwala decydować o kolorach dla różnych typów plików dla polecenia GNU coreutil ls, takich jak katalogi, zwykłe pliki, linki itp. Przypuszczam, że pliki kropkowe są uważane za odmianę typów plików Linux, a nie jako typ sam w sobie brak opcji określania dla nich koloru wyświetlacza.

Czy jest jakiś (inny) sposób, w jaki możesz lswyświetlać ukryte pliki w innym kolorze?

Johnny Baloney
źródło
Ta odpowiedź ma więcej niż kiedykolwiek chciałeś wiedzieć LS_COLORS. Nie mogłem wymyślić, jak sprawić, by działał dla plików dot, ale możesz to sprawdzić.
terdon
1
@terdon - nie działa dla plików dotfiles. Może dla niektórych, ale bardzo niewielu. Długość rozszerzenia jest ograniczona i większość nazw plików go przekroczy. Będzie działać dla plików o nazwie *.hidena przykład. Ta odpowiedź rozwiązuje podobny problem dla katalogów, chociaż odpowiedzi na to pytanie i problem z katalogiem prawdopodobnie nie są takie same.
mikeserv

Odpowiedzi:

1

Jeśli sortujesz tylko według nazwy, może to pomóc:

alias ll='LS_COLORS=$LS_COLORS:"di=0;34:" ; S_COLORS=$LS_COLORS:"fi=0;37:" ; export LS_COLORS; ls -dHhl --color=auto .*; LS_COLORS=$LS_COLORS:"di=1;94:" ; LS_COLORS=$LS_COLORS:"fi=1;37:" ; export LS_COLORS$

Jednak dzieli polecenie ls na dwie części, jedną dla ukrytych plików i folderów, drugą dla pozostałych.

głupkowaty
źródło
0

Tak, użyj cf. Właśnie wydałem dobrze udokumentowaną wersję, która konkretnie koloruje dane wyjściowe dla każdego rozszerzenia pliku i / lub niektórych specjalnych atrybutów (plik wykonywalny, linki, ukryte i katalogi). Spróbuj!!! Trudno porzucić to, gdy się przyzwyczaisz.

https://github.com/AdamDanischewski/cf

A.Danischewski
źródło
-1

Jeśli chcesz podświetlić ukryte pliki (i foldery) i nie zależy ci na kolorowaniu wszystkich innych plików, oczywistym podejściem jest uruchomienie ls -la | grep -E "^| \.[^/|'.].*"

Jeśli chcesz zachować inne kolory, sprawy stają się trudne, ponieważ $LS_COLORSnatywnie nie obsługuje kolorowania ukrytych plików, jak się wydaje.

Wpadłem na pomysł, aby dynamicznie dołączyć ukryte pliki bieżącego katalogu do $LS_COLORSzmiennej środowiskowej jako pseudo rozszerzenie, a następnie wykonać, a następnie uruchomić ls -la, dircolorsaby zresetować oryginalny schemat kolorów. Oczywiście wystąpi konflikt, jeśli ukryty plik ma taką samą nazwę jak znane rozszerzenie. Również ta metoda nie działa z ukrytymi folderami.

Ostrzeżenie: To rozwiązanie to (niezbyt dokładnie przetestowany) hack. Używaj go na własne ryzyko.

for h in $(ls -A | grep "^\."); do LS_COLORS="$LS_COLORS*$h=04;05:"; done; ls -la; eval $(dircolors)

Michael Osl
źródło