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?
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:
Hinweis:
man dir_colors
im Terminal ein.Sie können herausfinden, welche Farben ls
verwenden, indem Sie sich die Variable $LS_COLORS
ansehen:
Außerdem werden Dateien nach Attributen gefärbt:
aac, au, flac, mitte, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.
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.
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.
Der zweite und dritte Teil sind die Farbe und die Hintergrundfarbe:
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.
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
00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
30=black 31=red 32=green 33=yellow 34=blue 35=Magenta 36=cyan 37=white
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.
Dies erweitert sich auf Karthick87s Antwort .
ls -l
)#!/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:
Ausgabe mit meinem Setup (benutzerdefinierte Verzeichnisse und benutzerdefiniertes Solarized-Terminal-Design):
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.
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.