Was bedeuten die verschiedenen Farben in ls?


Zur akzeptierten Antwort gehen


Was bedeuten die verschiedenen Farben in Ubuntus ls Befehl? Wenn ich beispielsweise den ls Befehl in einen meiner Ordner tippe, 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?


374





2010-12-14




Anzahl der Antworten: 5


  • 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 : Defekter Link

Für Ihre Information:

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

     # 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.

     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:


403


2010-12-14

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

  • Türkis: Audiodateien 1
  • Leuchtend rot: Archive und komprimierte Dateien 2
  • Lila: Bilder und Videos 3

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, reißverschluss, z, z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, glas, rar, ace, zoo, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng 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 enthalten dircolors --print-database , 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. dh "01" bedeutet fett, "01; 31" bedeutet fett und rot. Und Sie würden Ihr Terminal dazu bringen, in Farbe zu drucken, indem Sie die Anweisung mit schließen \33[ und mit einem abschließen m . 33 oder 1B hexadezimal ist das ASCII-Zeichen "ESCAPE" (ein Sonderzeichen im ASCII-Zeichensatz). Beispiel:

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

Druckt "Hello World" in leuchtendem Rot.

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


98


2010-12-14

Wenn Sie über die Befehlszeile schreiben dircolors ( echo $LS_COLORS funktioniert auch), erhalten Sie eine Liste mit Codes und Farben für viele Dateitypen in einer Zeile. dircolors --print-database Zeigt sie jeweils in einer 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.
DATEI 00 # normale Datei
DIR 01; 34 # -Verzeichnis
LINK 01; 36 # symbolischer Link. (Wenn Sie dies auf 'Ziel' anstatt auf 'Ziel' setzen
 # numerischer Wert, die Farbe entspricht der der Datei, auf die verwiesen wird.)
FIFO 40; 33 # Pipe
SOCK 01; 35 # Buchse
TÜR 01; 35 # Tür
BLK 40; 33; 01 # Block Gerätetreiber
CHR 40; 33; 01 # Zeichengerätetreiber
ORPHAN 40; 31; 01 # Symlink zu nicht vorhandener Datei oder nicht stat'able Datei
SETUID 37; 41 # Datei, die setuid (u + s) ist
SETGID 30; 43 # Datei, die setgid ist (g + s)
STICKY_OTHER_WRITABLE 30; 42 # Verzeichnis, das klebrig und nicht beschreibbar ist (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir, das nicht beschreibbar (o + w) und nicht klebrig ist
STICKY 37; 44 # dir mit gesetztem Sticky-Bit (+ t) und nicht anders beschreibbar
# Archive oder komprimiert (leuchtend rot)
.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 um bold magenta . Und wenn Sie es in Ihre .bashrc Akte einsetzen, wird es dauerhaft.


27


2011-09-14

Dies erweitert die Antwort von Karthick87 .


Mit der Standardeinstellung

  • Ungefärbt (weiß) : Datei- oder Nicht-Dateinamen-Text (z. B. Berechtigungen in der Ausgabe von ls -l )
  • Fett blau : Verzeichnis
  • Fett Cyan : symbolischer Link
  • Fett grün : ausführbare Datei
  • Fett rot : Archivdatei
  • Fett Magenta : Bilddatei, Video, Grafik usw. oder Tür oder Sockel
  • Cyan : Audiodatei
  • Gelb mit schwarzem Hintergrund : Pfeife (AKA FIFO)
  • Fettgelb mit schwarzem Hintergrund : Block- 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 Fähigkeit
  • Weiß mit blauem Hintergrund : klebriges Verzeichnis
  • 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.


24


2017-02-17

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 ein dircolors -p |less , 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 dem Solarprojekt von Seebi .

Holen Sie sich dieses farbenfrohste Skript und führen Sie es mit dem Befehl aus, colortest -w 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 wählen Sie ;38;5; an diesen Attributcode anhängen , um Ihre Textfarbe anzugeben und 00; 38; 5; und hängen Sie dann Ihre Farbe an. Ich habe 208 gewählt, damit ich bekomme 00;38;5;208 .

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; den Hintergrund und die Farbe 56 hinzu, um eine Gesamtzeichenfolge von zu erhalten 00;38;5;208;48;5;56 .

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" ermittelt haben.

Dies gilt nicht sofort, Sie müssen die Konfiguration laden. Verwenden Sie dircolors ~/.dircolors den Get-Code, um Ihre LS_COLORS-Variable 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 ihre Notizen und den Code dazu.


18


2013-03-22