Was bedeuten die verschiedenen Farben in ls?


364

Was bedeuten die verschiedenen Farben in Ubuntus lsBefehl? Wenn ich beispielsweise den lsBefehl 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?

Antworten:


391
  • 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 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:

  • Für weitere Informationen geben Sie das man dir_colorsTerminal ein.

28
Das evalSkript, das die Ausgabefarbdarstellung für jeden Typ zeigt, ist brillant ... danke!
Russ

2
Pure sourcery;)
Homunculus Reticulli

5
Eine besser lesbare Version dieses evalSkripts finden Sie hier: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Gautam

3
Rot ist auch ein toter Symlink.
Thomas Ward

1
Was ist mit Dateien in normalem weißen Text?
S ..

98

Sie können herausfinden, welche Farben lsverwendet werden, indem Sie sich die $LS_COLORSVariable ansehen:

  • 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, jar, 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 lsmit dem Argument --color=auto(unter Ubuntu lsist 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.


Vielen Dank! Ich habe mir eine Frage zur Visualisierung der Git-Topologie angesehen und mich gefragt, warum einige der Zeichen gedruckt wurden.
PDP

27

Wenn Sie über die Befehlszeile schreiben dircolors( echo $LS_COLORSfunktioniert auch), erhalten Sie eine Liste mit Codes und Farben für viele Dateitypen in einer Zeile. dircolors --print-databaseZeigt 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 *.oggund .mp3um bold magenta. Und wenn Sie es in Ihre .bashrcAkte einsetzen, wird es dauerhaft.


2
Hey, vielleicht kommt jemand anderes mit einer besseren Antwort. Übrigens hast du mich mit dieser positiven
Bewertung

mach weiter! Sie haben sich dort ...
Nochmals vielen

Diese (ausgezeichnete) Antwort wurde zusammengeführt , falls Sie sich über die Daten wundern. :-)
Stefano Palazzo

@Rinzwind, also um eine Farbe für die pdfDatei festzulegen, ist der Prozess zu verwenden export? Ist es möglich, einfach eine Erweiterung in die Standardvariable LS_COLORS einzufügen?
Sigur

23

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 -pund man dir_colorsund füllte die Lücken mit meinen eigenen Nachforschungen.

Die Farben und Beschreibungen sind vom 14.04 bis 17.10 gleich.


Woher wusstest du rsMittel RESET, mhMittel MULTIHARDLINK, caMittel CAPABILITYusw.?
Fredrick Gauss

@FredrickGauss Wie ich in der Antwort schrieb, habe ich Beschreibungen vom Laufen bekommen dircolors -p.
wjandrea

dircolors -pnicht sagen rs ist RESET 0 # wieder auf "normal" Farbe .
Fredrick Gauss

@FredrickGauss Nicht explizit, aber "RESET" ist das einzige, das mit "rs" abgekürzt werden kann, und die Farbe (0) stimmt überein.
wjandrea

18

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 |lessIhren aktuellen Farbcode zu sehen.

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 -wdamit 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" festgelegt haben.

Dies gilt nicht sofort, Sie müssen die Konfiguration laden. Verwenden Sie dircolors ~/.dircolorsden 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.


Bitte überprüfen Sie, ob 256 Farben nur in xterm-kompatiblen Terminals funktionieren . 256 Farben funktionieren also nicht mit Konsole, sondern mit xterm und rxvt-unicode .
DK Bose

1
Konsole macht sein eigenes Ding. Ein schönes Farbschema finden Sie unter draculatheme.com/konsole oder techoverflow.net/2013/11/08/installing-konsole-solarized-theme .
Flickerfly
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.