Was bedeuten die verschiedenen Farben in ls?

292

Was bedeuten die verschiedenen Farben in Ubuntus ls -Befehl? Wenn ich zum Beispiel den Befehl ls in einen meiner Ordner eingabe, bekomme ich eine der Dateien in hellgrün, die andere (was ein Ordner ist) in blau mit grüner Hervorhebung.

Was bedeuten diese Farben, und es gibt ein Handbuch über alle Farben?

    
Rafid 14.12.2010, 09:15
quelle

5 Antworten

299
  • Blau : Verzeichnis
  • Grün : Ausführbare oder erkannte Datendatei
  • Himmelblau : Symbolische Verknüpfungsdatei
  • Gelb mit schwarzem Hintergrund : Gerät
  • Pink : Grafikdatei
  • Rot : Archivdatei
  • Rot mit schwarzem Hintergrund : Fehlerhafter Link

Zu Ihrer Information:

  • Um die Farbe auszuschalten, müssen Sie die folgenden Zeilen in .bashrc auskommentieren.

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'
    #fi
    
  • Auch wenn Sie Ihre eigenen bash Farbbedeutungen sehen möchten, dann kopieren Sie die folgenden Codes in Ihr Terminal.

      
    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       
    } 
    

    Ausgabe:

Hinweis:

  • Weitere Informationen erhalten Sie, wenn Sie man dir_colors im Terminal eingeben.
karthick87 14.12.2010, 09:18
quelle
84

Sie können herausfinden, welche Farben ls verwendet, indem Sie die Variable $LS_COLORS betrachten:

  • Turquoise: Audiodateien 1
  • Hellrot: Archive und komprimierte Dateien 2
  • Lila: Bilder und Videos 3

Außerdem sind Dateien nach Attributen koloriert:

  1. aac, au, flac, mittel, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, Jar, Rar, Ass, Zoo, CPIO, 7Z, RZ.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, angst, ogv, ogx.

All diese Informationen sind in der Ausgabe von dircolors --print-database enthalten, aber ihre Formatierung ist eher unlesbar.

Hier ist eine technische Erklärung, was passiert:

Beispiel:

CHR 40;33;01

Der Farbcode besteht aus drei Teilen:

  • Der erste Teil vor dem Semikolon steht für den Textstil.

    • 00 = keine, 01 = fett, 04 = Unterstrich, 05 = blinken, 07 = rückwärts, 08 = verdeckt.
  • Der zweite und dritte Teil sind die Farbe und die Hintergrundfarbe:

    • 30 = schwarz, 31 = rot, 32 = grün, 33 = gelb, 34 = blau, 35 = magenta, 36 = cyan, 37 = weiß.

Jeder Teil kann weggelassen werden, vorausgesetzt, er beginnt auf der linken Seite. h. "01" bedeutet fett, "01; 31" bedeutet fett und rot. Und Sie würden Ihr Terminal in Farbe drucken lassen, indem Sie die Anweisung mit [ umgehen und sie mit einem m beenden. 33, oder 1B in hexadezimal, ist das ASCII-Zeichen "ESCAPE" (ein Sonderzeichen im ASCII-Zeichensatz). Beispiel:

"[1;31mHello World[m"

Druckt "Hello World" in leuchtendem Rot.

Der Befehl ls mit dem Argument --color=auto (auf Ubuntu, ls ist ein Alias ​​für ls --color=auto ) durchläuft alle Dateinamen und versucht zunächst, verschiedene Typen wie Executable, Pipe usw. zu finden . Es versucht dann, reguläre Ausdrücke wie * .wav zu vergleichen und gibt den resultierenden Dateinamen aus, der in diesen farbändernden Anweisungen für bash enthalten ist.

    
Stefano Palazzo 14.12.2010 09:57
quelle
27

Wenn Sie dircolors ( echo $LS_COLORS funktioniert auch) über den Befehl eingeben Zeile erhalten Sie eine Liste von Codes und Farben für viele Dateitypen in 1 Zeile. dircolors --print-database zeigt ihnen jeweils 1 Zeile. Hier ist eine kurze Liste (ich habe versucht, die wichtigsten zu nennen). Unten wird erklärt, was die verschiedenen Codes am Ende jeder Zeile darstellen:

NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# archives or compressed (bright red)
.tar 01;31
.tgz 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.gif 01;35
.bmp 01;35
# audio formats
.aac 00;36
.flac 00;36
.ogg 00;36
  • Attributcodes: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Textfarbencodes: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Hintergrundfarbcodes: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Wenn Sie damit spielen möchten, hier ist ein Beispiel, wie man eine Farbe für eine Datei einstellt:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Dies wird *.ogg und .mp3 auf bold magenta setzen. Und wenn Sie es in Ihre .bashrc Datei einfügen, wird es dauerhaft.

    
Rinzwind 14.09.2011 10:25
quelle
15

Keine der Antworten hier enthält die 256 Farboptionen in den neuesten Versionen von Ubuntu. Ich habe Farbdefizite (einige Farben bringen mir Probleme in der Nähe), so dass das blaue Standardverzeichnis für mich wirklich schwer zu lesen ist. Was folgt, ist meine Forschung, um das zu ändern.

Geben Sie dircolors -p |less ein, um Ihren aktuellen Farbcode zu sehen.

Der Standardwert .bashrc sollte bereits konfiguriert sein, um nicht nur den Systemfarbcode zu nutzen, sondern auch einen in ~ / .dircolors, damit die dircolors-Ausgabe in .dircolor ausgegeben wird, damit Sie mit diesem Befehl beginnen können. dircolors -p > ~/.dircolors

Alternative: nehmen sehr ähnliche 256-Farben-Dircolors von seebi's auf solarisiertes Projekt.

Nimm dir das Kolortest-Skript und führe es mit dem Befehl colortest -w aus, damit du es sehen kannst alle Farben auf einmal. Wähle eine Farbe. Ich mag die Orange # 208. Ich möchte, dass das die Textfarbe ist, also kann ich diese Information über erweiterte Farbcodes anwenden. Ich kann das anwenden.

Sie haben also eine Farbe, was jetzt. Zuerst müssen wir die Zeichenfolge erstellen.

Die erste Zahl wird ein Attributcode sein, höchstwahrscheinlich 00, aber wenn Sie wollen, dass es blinkt, gehen Sie mit 05:

  

Wählen Sie einen Attributcode: 00 = keine 01 = fett 04 = Unterstrich 05 = blink 07 = rückwärts 08 = verdeckt

Als Nächstes wählen Sie ;38;5; an diesen Attribut-Code an, um Ihre Textfarbe anzuzeigen, um 00; 38; 5; und dann deine Farbe anhängen. Ich habe 208 ausgewählt, also bekomme ich 00;38;5;208 .

Wenn Sie auch einen Hintergrund hinzufügen möchten, wählen Sie eine andere Farbe (sagen wir 56) mit dem Skript colortest und dem Zusatz ;48;5; für den Hintergrund und 56 für die Farbe, um eine Gesamtstrange von 00;38;5;208;48;5;56 zu erhalten.

So, jetzt hast du es, was machst du damit?

vim ~/.dircolors und finde den Abschnitt, den du ändern willst (für mich ist das DIR) zu der Zeichenfolge, die wir oben festgelegt haben "00; 38; 5; 208".

Dies gilt nicht sofort, Sie müssen die Konfiguration laden. Verwenden Sie dircolors ~/.dircolors für den get-Code, um Ihre LS_COLORS-Variable festzulegen. Sie könnten dies einfach in Ihre Terminalsitzung einfügen oder Sie können Ihr Terminal schließen und erneut öffnen. Sie könnten das auch in eine Datei pipen und es als Shell-Skript ausführen.

Sie können das gleiche Verfahren mit 16 Farben durchführen. Sie brauchen nicht die speziellen; 38; 5 oder; 48; 5 Zeug. Einfach die Zahlen in die Saite werfen und die Einfachheit genießen.

Danke an Dan und seebi für ihre Notizen und den Code dazu.

    
flickerfly 22.03.2013 21:45
quelle
12

Dies erweitert sich auf die Antwort von Karthick87 .

Mit der Standardkonfiguration

  • Ungefärbt (weiß) : Datei oder nicht-Dateiname (z. B. Berechtigungen in der Ausgabe von ls -l )
  • Fett blau : Verzeichnis
  • Fettes Cyan : symbolischer Link
  • Fett grün : ausführbare Datei
  • Fett rot : Archivdatei
  • Fettes Magenta : Bilddatei, Video, Grafik usw. oder Tür oder Buchse
  • Cyan : Audiodatei
  • Gelb mit schwarzem Hintergrund : Pipe (AKA FIFO)
  • Fett gelb mit schwarzem Hintergrund : Gerät blockieren oder Zeichengerät
  • Fett rot mit schwarzem Hintergrund : verwaister Symlink oder fehlende Datei
  • Ungefärbt mit rotem Hintergrund : set-user-ID-Datei
  • Schwarz mit gelbem Hintergrund : Set-Group-ID-Datei
  • Schwarz mit rotem Hintergrund : Datei mit Funktion
  • Weiß mit blauem Hintergrund : Sticky-Verzeichnis
  • Blau mit grünem Hintergrund : Verzeichnis mit anderer Schreibberechtigung
  • Schwarz mit grünem Hintergrund : Sticky und andere beschreibbare Verzeichnisse

Skript zum Anzeigen von Farben

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

Ausgabe mit Standardeinstellungen:

Ausgabe mit meinem Setup (benutzerdefinierte Dircolors und benutzerdefinierte Solarized Terminal Theme):

Ich habe die Beschreibungen von dircolors -p und man dir_colors bekommen und die Lücken mit meinen eigenen Recherchen gefüllt.

Die Farben und Beschreibungen sind von 14.04 bis 17.10 gleich.

    
wjandrea 17.02.2017 22:05
quelle

Tags und Links