Come colorare i file nascosti negli elenchi dei file `ls`?


10

LS_COLORSla variabile ambientale consente di decidere i colori per diversi tipi di file per il lscomando di GNU coreutil , come directory, file regolari, collegamenti ecc. Suppongo che i file dot siano considerati una variazione dei tipi di file Linux e non un tipo a sé stante quindi nessuna opzione per specificare un colore di visualizzazione per loro.

C'è un (altro) modo in cui puoi fare in modo che le lsinserzioni mostrino i file nascosti in un colore diverso?


Questa risposta ha più di quanto tu abbia mai desiderato sapere LS_COLORS. Non sono riuscito a capire come farlo funzionare per i dotfile ma potresti voler provarlo.
terdon

1
@terdon - non funziona per i dotfile. Potrebbe per alcuni, ma molto pochi. C'è un limite alla lunghezza di un'estensione e la maggior parte dei nomi di file interi la supererà. Funzionerà per file denominati *.hidead esempio. Questa risposta risolve un problema simile per le directory, sebbene le risposte a questo e al problema della directory probabilmente non siano le stesse.
Mikeserv,

Risposte:


1

Se stai solo ordinando per nome, questo potrebbe aiutare:

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$

Tuttavia, divide il comando ls in due parti, una per i file e le cartelle nascosti, una per il resto.


0

Sì, usa cf. Ho appena rilasciato una versione ben documentata, colora in modo specifico l'output per estensione del file e / o alcuni attributi speciali (eseguibili, collegamenti, nascosti e directory). Dagli Un colpo!!! È difficile lasciarsi andare dall'usarlo una volta che ti ci abitui.

https://github.com/AdamDanischewski/cf


-1

Se vuoi solo evidenziare i file (e le cartelle) nascosti e non ti interessa la colorazione di tutti gli altri file, l'approccio ovvio è eseguire ls -la | grep -E "^| \.[^/|'.].*"

Se vuoi mantenere gli altri colori, le cose iniziano a diventare difficili, perché $LS_COLORSnon supporta nativamente la colorazione dei file nascosti come sembra.

Mi è venuta l'idea di aggiungere dinamicamente i file nascosti della directory corrente alla $LS_COLORSvariabile d'ambiente come estensione pseudo, quindi eseguire ls -lae successivamente eseguire dircolorsper ripristinare lo schema di colori originale. Ovviamente si verificherà un conflitto se un file nascosto ha lo stesso nome di un'estensione nota. Inoltre, questo metodo non funziona con le cartelle nascoste.

Avvertenza: questa soluzione è un hack (non molto testato). Usalo a tuo rischio e pericolo.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.