2009-02-28 15 views
35

Wenn Sie ls in einer Bash-Shell ausführen, gibt es manchmal Farben, um verschiedene Ressourcentypen anzuzeigen, und Sie können dies mit dem Argument --color aktivieren/steuern.Wie bestimmen Sie, was bash ls Farben bedeuten?

Aber weder der Mann noch Seite Google ist eine Antwort auf die Frage Bereitstellung:

Was diese Farben zeigen standardmäßig und wie zeige ich, was das derzeitige System verwendet?


UPDATE:

Vielen Dank aller für Antworten aber so weit, es einfacher zu machen, einen Gewinner auszuwählen, kann weiterhin einen Schritt jemand gehen und ein Verfahren zur Ausgabe von Beschreibungen in dem zur Verfügung stellen Farben, auf die sie sich beziehen.

Hmmm ... mein Beispiel funktioniert nicht, wenn gebucht (nur bei der Vorschau), so dass, wenn Sie diesen Code Vorschau wird es zeigen, was ich meine ...

<ul style="list-style:none; background:black; margin:0;padding:0.5em; width:10em"> 
    <li style="color:blue">directory</li> 
    <li style="color:aqua">symbolic link</li> 
    <li style="color:#A00000;">*.tar files</li> 
    <li style="color:white">...</li> 
</ul> 

Dank.

Antwort

43

Die Farben werden durch die Umgebungsvariable $LS_COLORS definiert. Abhängig von Ihrer Distribution wird sie beim Start der Shell automatisch generiert. Verwenden Sie dazu ~/.dircolors oder /etc/DIR_COLORS.

Edit:

Um die Bedeutung der Farben aufzulisten, verwenden Sie dieses Skript:

eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g') 
{ 
    IFS=: 
    for i in $LS_COLORS 
    do 
    echo -e "\e[${i#*=}m$(x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x")\e[m" 
    done 
} 
+0

Ich glaube, dass es beide verwendet - Standardeinstellungen sind in DIR_COLORS gesetzt, und alles in ~/.dir_colors hat Vorrang. – chris

+1

Vielleicht ... ich kenne keine anderen Distributionen, in Fedora ist es in /etc/profile.d/colorls.sh gesetzt, und es liest nur einen von ihnen. – Juliano

+0

Das ist ein nettes Skript, aber ich möchte auch die Farben für Erweiterungen sehen können, die Sie nicht aufgelistet haben. –

3

Sie sollten die Liste der Zuordnungen in/etc/DIR_COLORS sehen können. Sie können dies überschreiben, indem Sie .dir_colors in Ihrem Home-Verzeichnis erstellen.

3

Try "man 5 DIR_COLORS" zu sehen, wie es auf Ihrem System eingestellt wird. Meines hat nicht/etc/DIR_COLORS, also muss es woanders eingestellt werden.

2

Google für LS_COLORS für einige nützliche Links.

Edit: die Farben aufzulisten, diese einfache Bash-Skript kann eine Idee geben:

IFS=: 
set $LS_COLORS 
for C in $* 
do 
    IFS='=' 
    set $C 
    echo -e "\033[$2m$1\033[00m" 
done 
+0

Danke Neil ... leider gibt es keine Möglichkeit, eine sekundäre/teilweise Antwort zu akzeptieren, und Julianos ist etwas vollständiger. –