Was bedeuten die verschiedenen Farben in Ubuntus ls
-Befehl? Wenn ich zum Beispiel den Befehl ls
in einen meiner Ordner eingabe, bekomme ich eine der Dateien in hellgrün, die andere (was ein Ordner ist) in blau mit grüner Hervorhebung.
Was bedeuten diese Farben, und es gibt ein Handbuch über alle Farben?
Zu Ihrer 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
Auch wenn Sie Ihre eigenen bash Farbbedeutungen sehen möchten, dann 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:
Hinweis:
man dir_colors
im Terminal eingeben. Sie können herausfinden, welche Farben ls
verwendet, indem Sie die Variable $LS_COLORS
betrachten:
Außerdem sind Dateien nach Attributen koloriert:
aac, au, flac, mittel, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.
tar, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, Jar, Rar, Ass, Zoo, CPIO, 7Z, RZ.
All diese Informationen sind in der Ausgabe von dircolors --print-database
enthalten, aber ihre 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.
Der zweite und dritte Teil sind die Farbe und die Hintergrundfarbe:
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 in Farbe drucken lassen, indem Sie die Anweisung mit [
umgehen und sie mit einem m
beenden. 33, oder 1B in hexadezimal, ist das ASCII-Zeichen "ESCAPE" (ein Sonderzeichen im ASCII-Zeichensatz). Beispiel:
"[1;31mHello World[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 enthalten ist.
Wenn Sie dircolors
( echo $LS_COLORS
funktioniert auch) über den Befehl eingeben Zeile 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 # global default, although everything should be something. FILE 00 # normal file DIR 01;34 # directory LINK 01;36 # symbolic link. (If you set this to 'target' instead of a # numerical value, the color is as for the file pointed to.) 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 to nonexistent file, or non-stat'able file SETUID 37;41 # file that is setuid (u+s) SETGID 30;43 # file that is setgid (g+s) STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable # archives or compressed (bright red) .tar 01;31 .tgz 01;31 # image formats .jpg 01;35 .jpeg 01;35 .gif 01;35 .bmp 01;35 # audio formats .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 spielen möchten, hier ist ein Beispiel, wie man eine Farbe für eine Datei einstellt:
export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"
Dies wird *.ogg
und .mp3
auf bold magenta
setzen. Und wenn Sie es in Ihre .bashrc
Datei einfügen, wird es dauerhaft.
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.
Geben Sie dircolors -p |less
ein, 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, damit die dircolors-Ausgabe in .dircolor ausgegeben wird, damit Sie mit diesem Befehl beginnen können.
dircolors -p > ~/.dircolors
Alternative: nehmen sehr ähnliche 256-Farben-Dircolors von seebi's auf solarisiertes Projekt.
Nimm dir das Kolortest-Skript und führe es mit dem Befehl colortest -w
aus, damit du es sehen kannst alle Farben auf einmal. Wähle eine Farbe. Ich mag die Orange # 208. Ich möchte, dass das die Textfarbe ist, also kann ich diese Information über erweiterte Farbcodes anwenden. Ich kann das anwenden.
Sie haben also eine Farbe, was jetzt. Zuerst müssen wir die Zeichenfolge erstellen.
Die erste Zahl wird ein Attributcode sein, höchstwahrscheinlich 00, aber wenn Sie wollen, 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
Als Nächstes wählen Sie ;38;5;
an diesen Attribut-Code an, um Ihre Textfarbe anzuzeigen, um 00; 38; 5; und dann deine Farbe anhängen. Ich habe 208 ausgewählt, also bekomme 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 Zusatz ;48;5;
für den Hintergrund und 56 für die Farbe, um eine Gesamtstrange von 00;38;5;208;48;5;56
zu erhalten.
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 festgelegt haben "00; 38; 5; 208".
Dies gilt nicht sofort, Sie müssen die Konfiguration laden. Verwenden Sie dircolors ~/.dircolors
für den 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.
Dies erweitert sich auf die Antwort von Karthick87 .
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 Standardeinstellungen:
Ausgabe mit meinem Setup (benutzerdefinierte Dircolors und benutzerdefinierte Solarized Terminal Theme):
Ich habe die Beschreibungen von dircolors -p
und man dir_colors
bekommen und die Lücken mit meinen eigenen Recherchen gefüllt.
Die Farben und Beschreibungen sind von 14.04 bis 17.10 gleich.
Tags und Links command-line colors ls