Que signifient les différentes couleurs de la commande ls
de Ubuntu? Par exemple, lorsque je tape la commande ls
dans l'un de mes dossiers, l'un des fichiers est en vert clair, l'autre (un dossier) en bleu avec une surbrillance verte.
Que signifient ces couleurs et existe-t-il un manuel sur toutes les couleurs?
Pour ton information:
Pour désactiver la couleur, vous devez commenter les lignes suivantes dans .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
Aussi, si vous voulez voir vos propres significations de couleurs bash, copiez/collez les codes suivants dans votre 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
}
Sortie:
Remarque:
man dir_colors
in terminal.Pour savoir quelles couleurs ls
utilise en consultant la variable $LS_COLORS
:
De plus, les fichiers sont colorés par des attributs:
aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.
goudron, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, pot, jar, rar, ace, Zoo, cpio, 7z, rz.
jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tiff, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, anx, ogv, anx, ogv.
Toutes ces informations sont contenues dans le résultat de dircolors --print-database
, mais sa mise en forme est plutôt illisible.
Voici une explication technique de ce qui se passe:
Exemple:
CHR 40;33;01
Le code de couleur est composé de trois parties:
La première partie avant le point-virgule représente le style de texte.
Les deuxième et troisième parties sont la couleur et la couleur de fond:
Chaque partie peut être omise, en partant de la gauche. "01" signifie gras, "01; 31" signifie gras et rouge. Et vous obtiendrez votre terminal pour imprimer en couleur en échappant l'instruction avec \33[
et en la terminant par un m
name__. 33, ou 1B en hexadécimal, correspond au signe ASCII "ESCAPE" (caractère spécial du jeu de caractères ASCII). Exemple:
"\33[1;31mHello World\33[m"
Imprime "Hello World" en rouge vif.
La commande ls
avec l'argument --color=auto
(sous Ubuntu, ls
est un alias de ls --color=auto
) passe en revue tous les noms de fichiers et essaie en premier de faire correspondre différents types, tels que Executable, Pipe, etc. Il essaie ensuite de faire correspondre les expressions régulières telles que * .wav et affiche le nom du fichier résultant, inclus dans ces instructions de changement de couleur pour bash.
Si vous tapez dircolors
(echo $LS_COLORS
fonctionne également) à partir de la ligne de commande, vous obtiendrez une liste de codes et de couleurs pour de nombreux types de fichiers sur une ligne. dircolors --print-database
leur montre une ligne à la fois. Voici une courte liste (j'ai essayé de mettre les plus importantes). En bas, vous trouverez une explication sur ce que représentent les différents codes à la fin de chaque ligne:
NORMAL 00 # global par défaut, même si tout devrait être quelque chose. FILE 00 # fichier normal DIR 01; 34 # répertoire LINK 01; 36 # lien symbolique . (Si vous définissez ceci sur 'cible' au lieu d'une valeur numérique #, La couleur est celle du fichier pointé.) FIFO 40; 33 # pipe SOCK 01 ; 35 # socket DOOR 01; 35 # door BLK 40; 33; 01 # pilote de périphérique de bloc CHR 40; 33; 01 # pilote de périphérique de caractère Orphan 40; 31; 01 # lien symbolique vers un fichier inexistant, ou un fichier non statable SETUID 37; 41 # fichier qui est setuid (u + s) SETGID 30; 43 # fichier is setgid (g + s) STICKY_OTHER_WRITABLE 30; 42 # dir est collant et autre chose en écriture (+ t, o + w) OTHER_WRITABLE 34; 42 # dir qui est autre-enregistrable ( o + w) et non collant STICKY 37; 44 # dir avec le bit collant défini (+ t) et non archivable # ou compressé (rouge vif) .tar 01; 31 . tgz 01; 31 # formats d'image . jpg 01; 35 . jpeg 01; 35 . gif 01; 35 . Bmp 01; 35 # Formats audio . 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
Si vous voulez jouer avec ceci, voici un exemple sur la façon de définir une couleur pour un fichier:
export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"
Ceci définira *.ogg
et .mp3
en bold Magenta
. Et si vous le mettez dans votre fichier .bashrc
, il deviendra permanent.
Cela s’étend sur réponse de 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
Sortie avec configuration par défaut:
Sortie avec ma configuration (couleurs personnalisées et thème de terminal Solarized personnalisé):
J'ai reçu les descriptions de dircolors -p
et man dir_colors
et j'ai comblé les lacunes avec mes propres recherches.
Les couleurs et les descriptions sont les mêmes du 14.04 au 17.10.
Aucune des réponses ici n'inclut les options de 256 couleurs dans les dernières versions d'Ubuntu. Je manque de couleurs (certaines couleurs me causent des problèmes les unes à côté des autres), donc le répertoire bleu par défaut sur fond noir est très difficile à lire. Ce qui suit est ma recherche pour changer cela.
Tapez dircolors -p |less
pour voir votre code de couleur actuel.
Le fichier .bashrc par défaut devrait déjà être configuré non seulement pour tirer parti du code de couleur système, mais également dans ~/.dircolors afin de vider la sortie en dircolors au format .dircolor afin que vous puissiez commencer par utiliser cette commande. dircolors -p > ~/.dircolors
Alternative: récupérez un dircolor de 256 couleurs très similaire dans le projet de seebi's solarisé .
Saisissez ceci le plus coloré des scripts et exécutez-le avec la commande colortest -w
pour pouvoir voir toutes les couleurs en même temps. Choisir une couleur. J'aime l'orange # 208. Je veux que ce soit la couleur du texte afin d'utiliser cette information sur des codes de couleur étendus, je peux l'appliquer.
Donc, vous avez une couleur, maintenant quoi. Nous devons d'abord créer la chaîne.
Le premier numéro sera un code d'attribut, probablement 00, mais si vous voulez qu'il clignote, allez avec 05:
Choisissez un code d’attribut: 00 = aucun 01 = gras 04 = soulignement 05 = clignotement 07 = inversion 08 = masqué
Choisissez ensuite ajouter ;38;5;
à cet attribut pour indiquer la couleur de votre texte et obtenir 00; 38; 5; et ensuite ajouter votre couleur. J'ai choisi 208 donc je reçois 00;38;5;208
.
Si vous souhaitez également mettre un arrière-plan dessus, choisissez une autre couleur (disons 56) avec le script le plus cher et ajoutez le code ;48;5;
pour le fond et 56 pour la couleur afin d'obtenir une chaîne totale de 00;38;5;208;48;5;56
.
Alors maintenant vous l'avez, que faites-vous avec?
vim ~/.dircolors
et trouvez la section que vous voulez changer (pour moi, c'est DIR) à la chaîne que nous avons déterminée ci-dessus "00; 38; 5; 208".
Cela ne s'appliquera pas immédiatement, vous devrez charger la configuration. Utilisez dircolors ~/.dircolors
dans le code d'extraction pour définir votre variable LS_COLORS. Vous pouvez simplement coller cela dans votre session de terminal ou vous pouvez fermer votre terminal et le rouvrir. Vous pouvez également diriger cela dans un fichier et l'exécuter en tant que script Shell.
Vous pouvez faire la même procédure avec 16 couleurs. Vous n'avez pas besoin des options spéciales 38, 5 ou 48; 5. Il suffit de lancer les chiffres dans la chaîne et de profiter de la simplicité.