Frage Was bedeuten die verschiedenen Farben in ls?


Was machen die verschiedenen Farben in Ubuntu? ls Befehl bedeuten? Zum Beispiel, wenn ich den ls Befehl in einem meiner Ordner, ich bekomme eine der Dateien in hellgrün, die andere (das ist ein Ordner) in blau mit grüner Hervorhebung.

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


298
2017-12-14 08:15


Ursprung




Antworten:


  • Blau: Verzeichnis
  • Grün: Ausführbare oder erkannte Datendatei
  • Himmelblau: Symbolische Verknüpfungsdatei
  • Gelb mit schwarzem Hintergrund: Gerät
  • Rosa: Grafikbilddatei
  • rot: Archivdatei
  • Rot mit schwarzem Hintergrund: Defekter Link

Für Ihre Information:

  • Um die Farbe auszuschalten, musst du die folgenden Zeilen 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 Ihre eigenen Bash-Farben 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: 


306
2017-12-14 08:18



Das eval Skript, das die Ausgabefarbdarstellung für jeden Typ zeigt, ist glänzend ... danke! - Russ
Reine Quelle;) - Homunculus Reticulli
Eine besser lesbare Version davon eval Skript ist hier: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Rot ist auch ein toter Symlink. - Thomas Ward♦
Was ist mit Dateien in normalem weißen Text? - S..


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

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

Darüber hinaus sind Dateien nach Attributen koloriert:

alt text


  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, 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, ängstlich, ogv, ogx.


All diese Informationen sind in der Ausgabe von. Enthalten dircolors --print-database, aber seine 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 veranlassen, in Farbe zu drucken, indem Sie der Anweisung mit entkommen \33[ und endend mit einem m. 33, oder 1B in 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 (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 eingeschlossen ist.


86
2017-12-14 08:57



Vielen Dank! Ich schaute auf einen Git-Topologie-Visualisierung  Frage und fragte sich, warum einige der Charaktere gedruckt wurden. - pdp


Wenn Sie eingeben dircolors (echo $LS_COLORS funktioniert auch) von der Befehlszeile 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 # globaler Standard, obwohl alles etwas sein sollte.
FILE 00 # normale Datei
DIR 01; 34 # Verzeichnis
LINK 01; 36 # symbolischer Link. (Wenn Sie dies auf "Ziel" anstatt auf a einstellen
 # numerischer Wert, die Farbe ist wie für die Datei gezeigt.)
FIFO 40; 33 # Rohr
SOCK 01; 35 # Buchse
Tür 01; 35 # Tür
BLK 40; 33; 01 # Blockgerätetreiber
CHR 40; 33; 01 # Zeichen Gerätetreiber
ORPHAN 40; 31; 01 # Symlink zu nicht existierender Datei oder nicht-statistischer Datei
SETUID 37; 41 # file das ist setuid (u + s)
SETGID 30; 43 # Datei, die Setgid ist (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir, das ist klebrig und anders schreibbar (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir, das nicht beschreibbar (o + w) und nicht klebrig ist
STICKY 37; 44 # dir mit dem Sticky Bit gesetzt (+ t) und nicht anders schreibbar
# Archive oder komprimiert (hellrot)
.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
  • Text Farbcodes: 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 hier mitspielen möchten, finden Sie hier ein Beispiel, wie Sie eine Farbe für eine Datei einstellen können:

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

Dies wird eingestellt *.ogg und .mp3 zu bold magenta. Und wenn Sie es in Ihre setzen .bashrc Datei wird es dauerhaft werden.


27
2017-09-14 08:25



Hey, vielleicht kommt jemand anderes mit einer besseren Antwort. Btw du hast mich über 15k mit dieser upvote;) - Rinzwind
mach weiter! Du hast dich selbst dort hingebracht ... Danke nochmal, ich habe einen "String" gemacht, um nach Farben zu suchen, von denen ich mich nicht sicher war - user784637
Diese (ausgezeichnete) Antwort war verschmolzen, falls Sie sich über die Daten wundern. :-) - Stefano Palazzo♦
@Rinzwind, also um eine Farbe zu setzen pdf Datei ist der Prozess zu verwenden export? Ist es möglich, im Standard einfach eine Erweiterung hinzuzufügen? LS_COLORS  Variable? - Sigur


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.

Art dircolors -p |less 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, sodass die dircolors-Ausgabe in .dircolor ausgegeben wird, damit Sie mit diesem Befehl beginnen können. dircolors -p > ~/.dircolors

Alternative: eine sehr ähnliche 256 Farben Dircolors aus seebis Solarisierung Projekt.

Nimm das Colortest-Skript und führe es mit dem Befehl aus colortest -w So können Sie alle Farben gleichzeitig sehen. Wähle eine Farbe. Ich mag die Orange # 208. Ich möchte, dass dies die Textfarbe ist, also kann ich diese Information über erweiterte Farbcodes anwenden.

Also hast du eine Farbe, was nun. Zuerst müssen wir die Zeichenfolge erstellen.

Die erste Zahl wird ein Attributcode sein, am wahrscheinlichsten 00, aber wenn Sie möchten, 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

Nächste Auswahl append ;38;5; zu diesem Attributcode, um Ihre Textfarbe anzugeben, um 00 zu erhalten; 38; 5; und dann deine Farbe anhängen. Ich habe 208 ausgewählt, also komme 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 Append ;48;5;für den Hintergrund und 56 für die Farbe, um eine Gesamtstrang von zu erhalten 00;38;5;208;48;5;56.

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 bestimmt haben "00; 38; 5; 208".

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

Dank an Dan und Seebi für ihre Notizen und Code dazu.


15
2018-03-22 20:45





Dies geht weiter Karthick87's Antwort.


Mit der Standardeinrichtung

  • Ungefärbt (weiß): Datei oder Nicht-Dateiname-Text (z. B. Berechtigungen in der Ausgabe von ls -l)
  • Fett blau: Verzeichnis
  • Fettes Cyan: symbolischer Link
  • Fettes Grün: ausführbare Datei
  • Fett rot: Archivdatei
  • Fettes Magenta: Bilddatei, Video, Grafik usw. oder Tür oder Steckdose
  • Cyan: Audiodatei
  • Gelb mit schwarzem Hintergrund: Rohr (AKA FIFO)
  • Fettes Gelb mit schwarzem Hintergrund: Gerät blockieren oder Zeichengerät
  • Fett rot mit schwarzem Hintergrund: Waisen-Symlink oder Fehlende Datei
  • Ungefärbt mit rotem Hintergrund: set-Benutzer-ID-Datei
  • Schwarz mit gelbem Hintergrund: Set-Gruppen-ID-Datei
  • Schwarz mit rotem Hintergrund: Datei mit Fähigkeiten
  • Weiß mit blauem Hintergrund: klebriges Verzeichnis
  • Blau mit grünem Hintergrund: Anderes beschreibbares Verzeichnis
  • Schwarz mit grünem Hintergrund: Sticky und andere beschreibbare 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 Standardeinstellungen:

gnome-terminal screenshot

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

gnome-terminal screenshot

Ich habe die Beschreibungen von dircolors -p und man dir_colorsund füllte die Lücken mit meinen eigenen Recherchen.

Die Farben und Beschreibungen sind von 14.04 bis 17.10 gleich.


14
2018-02-17 21:05



Woher wusstest du das rs meint RESET, mh meint MULTIHARDLINK, ca meint CAPABILITY etc? - Fredrick Gauss
@FredrickGauss Wie ich in der Antwort geschrieben habe, habe ich Beschreibungen vom Laufen bekommen dircolors -p. - wjandrea
dircolors -p sagt nicht rs ist RESET 0 # wird auf "normale" Farbe zurückgesetzt . - Fredrick Gauss
@FredrickGauss Nicht explizit, aber "RESET" ist der einzige, der als "rs" abgekürzt werden kann, und die Farbe (0) stimmt überein. - wjandrea
Ich frage das. Sie schätzen nur, folgern. - Fredrick Gauss