it-swarm.com.de

Was bedeuten die verschiedenen Farben in ls?

Was bedeuten die verschiedenen Farben in Ubuntus Befehl ls? Wenn ich beispielsweise den Befehl ls in einen meiner Ordner eingebe, wird eine der Dateien hellgrün und die andere (ein Ordner) blau mit grüner Hervorhebung angezeigt.

Was bedeuten diese Farben und es gibt ein Handbuch zu allen Farben?

355
Rafid
  • Blau : Verzeichnis
  • Grün : Ausführbare oder erkannte Datendatei
  • Himmelblau : Symbolische Linkdatei
  • Gelb mit schwarzem Hintergrund : Gerät
  • Pink : Grafikdatei
  • Rot : Archivdatei
  • Rot mit schwarzem Hintergrund : Defekte Verbindung

Für Ihre 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
    _
  • Wenn Sie auch Ihre eigenen Bash-Farbbedeutungen sehen möchten, kopieren Sie die folgenden Codes in Ihr Terminal und fügen Sie sie ein.

    _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:
    alt text

Hinweis:

384
karthick87

Sie können herausfinden, welche Farben ls verwenden, indem Sie sich die Variable $LS_COLORS ansehen:

  • Türkis: Audiodateien1
  • Leuchtend rot: Archive und komprimierte Dateien2
  • Lila: Bilder und Videos3

Außerdem werden Dateien nach Attributen gefärbt:

alt text


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

  2. teer, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, 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.


Alle diese Informationen sind in der Ausgabe von dircolors --print-database enthalten, ihre Formatierung ist jedoch 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 = unterstrichen, 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 links. "01" bedeutet fett, "01; 31" bedeutet fett und rot. Wenn Sie die Anweisung mit \33[ schließen und mit m beenden, wird Ihr Terminal in Farbe gedruckt. 33 oder 1B in hexadezimaler Schreibweise ist das Zeichen ASCII "ESCAPE" (ein Sonderzeichen im Zeichensatz ASCII). Beispiel:

"\33[1;31mHello World\33[m"

Druckt "Hello World" in leuchtendem Rot.

Der Befehl ls mit dem Argument --color=auto (unter Ubuntu ist ls ein Alias ​​für ls --color=auto) durchläuft alle Dateinamen und versucht zunächst, verschiedene Typen wie Executable zuzuordnen , Pipe und so weiter. Anschließend wird versucht, reguläre Ausdrücke wie * .wav zu finden, und der resultierende Dateiname wird gedruckt, der in diesen Anweisungen zum Ändern der Farbe für bash enthalten ist.

97
Stefano Palazzo

Wenn Sie dircolors (echo $LS_COLORS funktioniert auch) über die Befehlszeile eingeben, erhalten Sie eine Liste mit Codes und Farben für viele Dateitypen in einer Zeile. dircolors --print-database zeigt jeweils eine Zeile an. Hier ist eine kurze Liste (ich habe versucht, die wichtigsten einzufügen). Unten finden Sie eine Erklärung, was die verschiedenen Codes am Ende jeder Zeile bedeuten:

 NORMAL 00 # globaler Standard, obwohl alles etwas sein sollte. 
 FILE 00 # normale Datei 
 DIR 01; 34 # Verzeichnis 
 LINK 01; 36 # symbolischer Link . (Wenn Sie anstelle eines numerischen Werts 
 # "Target" (Ziel) festlegen, entspricht die Farbe der Farbe der Datei, auf die verwiesen wird.) 
 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 zu nicht vorhandener Datei oder nicht stat'able Datei 
 SETUID 37; 41 # Datei, die setuid (u + s) 
 SETGID 30; 43 # Datei, die is setgid (g + s) 
 STICKY_OTHER_WRITABLE 30; 42 # dir, das klebrig und nicht beschreibbar ist (+ t, o + w) 
 OTHER_WRITABLE 34; 42 # dir, das nicht beschreibbar ist ( o + w) und nicht klebrig 
 STICKY 37; 44 # dir mit gesetztem klebrigen Bit (+ t) und nicht anders beschreibbaren 
 # Archiven oder komprimierten (leuchtend roten) 
 .tar 01; 31 
 .tgz 01; 31 
 # Bildformate 
. jpg 01; 35 
. jpeg 01; 35 
. gif 01; 35 
. Bmp 01; 35 
 # Audioformate 
. Aac 00; 36 
. Flac 00; 36 
. Ogg 00; 36 
  • Attributcodes: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Textfarbcodes: 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 herumspielen möchten, finden Sie hier ein Beispiel zum Festlegen einer Farbe für eine Datei:

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

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

27
Rinzwind

Dies erweitert sich auf Karthick87s Antwort .


Mit der Standardeinstellung

  • Ungefärbt (weiß) : Datei oder Text ohne Dateinamen (z. B. Berechtigungen in der Ausgabe von ls -l)
  • Fettblau : Verzeichnis
  • Fett Cyan : symbolischer Link
  • Fettgrün : ausführbare Datei
  • Fett rot : Archivdatei
  • Fett Magenta : Bilddatei, Video, Grafik usw. oder Tür oder Buchse
  • Cyan : Audiodatei
  • Gelb mit schwarzem Hintergrund : Pipe (AKA FIFO)
  • Fettgelb mit schwarzem Hintergrund : Gerät blockieren oder Zeichengerät
  • Fett rot mit schwarzem Hintergrund : Orphan 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 Fähigkeit
  • Weiß mit blauem Hintergrund : Sticky Directory
  • Blau mit grünem Hintergrund : Verzeichnis mit anderen Schreibrechten
  • Schwarz mit grünem Hintergrund : klebriges und nicht beschreibbares Verzeichnis

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 Standardeinstellung:

gnome-terminal screenshot

Ausgabe mit meinem Setup (benutzerdefinierte Verzeichnisse und benutzerdefiniertes Solarized-Terminal-Design):

gnome-terminal screenshot

Ich erhielt die Beschreibungen von dircolors -p und man dir_colors und füllte die Lücken mit meinen eigenen Nachforschungen.

Die Farben und Beschreibungen sind vom 14.04 bis 17.10 gleich.

22
wjandrea

Keine der Antworten hier enthält die 256 Farboptionen in den neuesten Versionen von Ubuntu. Ich habe Farbdefizite (einige Farben verursachen Probleme in der Nähe), daher ist das Standardverzeichnis für Blau auf Schwarz für mich sehr schwer zu lesen. Was folgt, ist meine Forschung, um das zu ändern.

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

Die Standardeinstellung .bashrc sollte bereits so konfiguriert sein, dass nicht nur der Systemfarbcode, sondern auch einer in ~/.dircolors ausgenutzt wird. Kopieren Sie daher die Dircolors-Ausgabe nach .dircolor, damit Sie mit diesem Befehl beginnen können. dircolors -p > ~/.dircolors

Alternative: Nehmen Sie ein sehr ähnliches 256-Farben-Verzeichnis aus seebis solarisiertem Projekt.

Holen Sie sich dieses farbigstes Skript und führen Sie es mit dem Befehl colortest -w aus, damit Sie alle Farben auf einmal sehen können. Wähle eine Farbe. Ich mag die Orange # 208. Ich möchte, dass dies die Textfarbe ist. Wenn ich diese Informationen für erweiterte Farbcodes verwende, kann ich das anwenden.

Du hast also eine Farbe, was nun? Zuerst müssen wir den String erstellen.

Die erste Zahl ist ein Attributcode, höchstwahrscheinlich 00, aber wenn Sie möchten, dass es blinkt, gehen Sie zu 05:

Wählen Sie einen Attributcode: 00 = Keine 01 = Fett 04 = Unterstrich 05 = Blinken 07 = Rückwärts 08 = Verdeckt

Als nächstes hänge ;38;5; an diesen Attributcode an, um anzugeben, welche Textfarbe 00; 38; 5; und hängen Sie dann Ihre Farbe an. Ich habe 208 gewählt, damit ich 00;38;5;208 bekomme.

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

Also jetzt hast du es, was machst du damit?

vim ~/.dircolors und suchen Sie den Abschnitt, den Sie ändern möchten (für mich ist das DIR), in die Zeichenfolge, die wir über "00; 38; 5; 208" festgelegt haben.

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

Sie können dasselbe Verfahren mit 16 Farben durchführen. Du brauchst keine speziellen Sachen wie 38, 5 oder 48, 5. Werfen Sie einfach die Zahlen in die Zeichenfolge und genießen Sie die Einfachheit.

Vielen Dank an Dan und seebi für die Hinweise und den Code dazu.

18
flickerfly