452 votes

Que signifient les différentes couleurs dans ls ?

Que signifient les différentes couleurs du logo Ubuntu ? ls signifie-t-elle ? Par exemple, lorsque je tape la commande ls dans un de mes dossiers, j'obtiens un des fichiers en vert clair, l'autre (qui est un dossier) en bleu avec un surlignage vert.

Que signifient ces couleurs, et existe-t-il un manuel sur toutes ces couleurs ?

496voto

Rob Gray Points 1556
  • Bleu : Annuaire
  • Vert : Fichier exécutable ou fichier de données reconnu
  • Cyan (Bleu ciel) : Fichier de liens symboliques
  • Jaune avec fond noir : Dispositif
  • Magenta (Rose) : Fichier d'image graphique
  • Rouge : Fichier d'archives
  • Rouge avec fond noir : Lien brisé

Pour votre information :

  • Pour désactiver la couleur, vous devez commenter les lignes suivantes dans le fichier .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
  • De plus, si vous voulez voir vos propres significations de couleurs en 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 :
terminal output

Nota:

118voto

andybee Points 497

Vous pouvez découvrir les couleurs ls utilise en regardant le $LS_COLORS variable :

  • Turquoise : fichiers audio 1
  • Bright Red : Archives et fichiers compressés 2
  • Violet : images et vidéos 3

En outre, les fichiers sont colorisés par attributs :

alt text


  1. aac, au, flac, mid, 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, anx, ogv, ogx.


Toutes ces informations sont contenues dans la sortie 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 couleur se compose de trois parties :

  • La première partie avant le point-virgule représente le style de texte.

    • 00=aucune, 01=gras, 04=diminué, 05=clignotant, 07=inversé, 08=caché.
  • Les deuxième et troisième parties sont la couleur et la couleur de fond :

    • 30=noir, 31=rouge, 32=vert, 33=jaune, 34=bleu, 35=magenta, 36=cyan, 37=blanc.

Chaque partie peut être omise, en supposant que l'on commence par la gauche. Par exemple, "01" signifie gras, "01;31" signifie gras et rouge. Et pour que votre terminal imprime en couleur, il suffit d'échapper l'instruction avec \33[ et en le terminant par un m . 33, ou 1B en hexadécimal, est le signe ASCII "ESCAPE" (un 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 (sur Ubuntu, ls est un alias pour ls --color=auto ) passe en revue tous les noms de fichiers et essaie d'abord de faire correspondre différents types, comme Executable, Pipe, etc. Elle essaie ensuite de faire correspondre des expressions régulières comme *.wav et affiche le nom de fichier résultant, entouré de ces instructions de changement de couleur pour bash.

45voto

wjandrea Points 13147

Cela permet de développer La réponse de Karthick87 .


Liste complète, avec la configuration par défaut

  • Non coloré (blanc) : dossier o le texte non filiforme (par exemple, les autorisations dans la sortie de ls -l ) o fichier multi-liens
  • Bleu foncé : annuaire
  • Cyan en gras : lien symbolique
  • Vert gras : fichier exécutable
  • Rouge vif : fichier d'archives
  • Magenta gras : fichier image, vidéo, graphique, etc. o porte o prise de courant
  • Cyan : fichier audio
  • Jaune avec fond noir : pipe (AKA FIFO)
  • Jaune vif sur fond noir : dispositif de blocage o dispositif à caractères
  • Rouge vif sur fond noir : lien symbolique orphelin o fichier manquant
  • Non coloré avec fond rouge : fichier set-user-ID
  • Noir avec fond jaune : fichier set-group-ID
  • Noir avec fond rouge : fichier avec capacité
  • Blanc avec fond bleu : répertoire collant
  • Bleu avec fond vert : autre répertoire inscriptible
  • Noir avec fond vert : répertoire de collants et autres écritures

Notez que le rouge vif est orange, le noir est gris foncé, le cyan est bleu/vert et le magenta vif est violet/rose/lavande.

script pour afficher les couleurs

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

declare -A descriptions=(
    [bd]="block device"
    [ca]="file with capability"
    [cd]="character device"
    [di]="directory"
    [do]="door"
    [ex]="executable file"
    [fi]="regular file"
    [ln]="symbolic link"
    [mh]="multi-hardlink"
    [mi]="missing file"
    [no]="normal non-filename text"
    [or]="orphan symlink"
    [ow]="other-writable directory"
    [pi]="named pipe, AKA FIFO"
    [rs]="reset to no color"
    [sg]="set-group-ID"
    [so]="socket"
    [st]="sticky directory"
    [su]="set-user-ID"
    [tw]="sticky and other-writable directory"
)

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add description for named types.
    desc="${descriptions[$type]}"

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != "$color_prev" ]]; then
        echo
    fi

    printf "\e[%sm%s%s\e[m " "$color" "$type" "${desc:+ ($desc)}"

    # For next loop
    color_prev="$color"
done
echo

Sortie avec la configuration par défaut :

gnome-terminal screenshot - default

Sortie avec ma configuration ( couleurs de disque personnalisées y thème personnalisé du terminal Solarized ) :

gnome-terminal screenshot - custom

J'ai obtenu les descriptions de dircolors -p y man dir_colors et j'ai comblé les lacunes avec mes propres recherches.

Les couleurs et les descriptions sont les mêmes de 14.04 à 17.10.

28voto

Rinzwind Points 270388

Si vous tapez dircolors ( echo $LS_COLORS fonctionne également) en ligne de commande, vous obtiendrez une liste de codes et de couleurs pour de nombreux types de fichiers en une seule ligne. dircolors --print-database leur montre une ligne à la fois. Voici une courte liste (j'ai essayé de mettre les plus importants). En bas, il y a une explication sur ce que représentent les différents codes à la fin de chaque ligne :

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
  • Codes d'attributs : 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Codes de couleur du texte : 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Codes de couleur de fond : 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Si vous voulez jouer avec cela, voici un exemple de la façon de définir une couleur pour un fichier :

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

Cela permettra de régler *.ogg y .mp3 a bold magenta . Et si vous le mettez dans votre .bashrc il deviendra permanent.

18voto

cadrian Points 4102

Aucune des réponses ici n'inclut les options de 256 couleurs dans les dernières versions d'Ubuntu. Je suis daltonien (certaines couleurs me posent problème lorsqu'elles sont proches les unes des autres) et le répertoire bleu par défaut sur fond noir est très difficile à lire pour moi. Ce qui suit est ma recherche pour changer cela.

Type dircolors -p |less pour voir votre code couleur actuel.

Le fichier .bashrc par défaut devrait déjà être configuré non seulement pour tirer parti du code de couleur du système, mais aussi d'un fichier dans ~/.dircolors afin de transférer la sortie de dircolors dans .dircolor et de pouvoir commencer avec cela en utilisant cette commande. dircolors -p > ~/.dircolors

Alternatif : prendre un dircolors 256 couleurs très similaire chez seebi's solarisé projet.

Prends ça. colortest script et l'exécuter avec la commande colortest -w pour que tu puisses voir toutes les couleurs en même temps. Choisissez une couleur. J'aime l'orange #208. Je veux que ce soit la couleur du texte, donc en utilisant cette information sur les codes de couleur étendus, je peux l'appliquer.

Vous avez une couleur, et maintenant ? Tout d'abord, nous devons créer la chaîne de caractères.

Le premier chiffre sera un code d'attribut, le plus souvent 00, mais si vous voulez qu'il clignote, choisissez 05 :

Choisissez un code d'attribut : 00=aucun 01=gras 04=souligné 05=clignotant 07=inversé 08=caché

Prochain choix : Append ;38;5; à ce code d'attribut pour indiquer la couleur de votre texte afin d'obtenir 00;38;5 ; puis ajoutez votre couleur. J'ai choisi 208 et j'obtiens 00;38;5;208 .

Si vous voulez également y mettre un fond, choisissez une autre couleur (disons 56) avec le script et l'appendice ;48;5; pour l'arrière-plan et 56 pour la couleur pour obtenir une chaîne totale de 00;38;5;208;48;5;56 .

Maintenant que 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é ci-dessus "00;38;5;208".

Cela ne s'appliquera pas immédiatement, vous devrez charger la configuration. Utilisez dircolors ~/.dircolors au code get pour définir votre variable LS_COLORS. Vous pourriez juste coller cela dans votre session de terminal ou vous pouvez fermer votre terminal et le rouvrir. Vous pouvez aussi le mettre dans un fichier et l'exécuter comme un Shell ShellscriptShell.

Vous pouvez procéder de la même manière avec 16 couleurs. Vous n'avez pas besoin du truc spécial ;38;5 ou ;48;5. Il suffit de jeter les chiffres dans la chaîne et de profiter de la simplicité.

Merci à Dan y seebi pour leurs notes et leur code à ce sujet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X