web-dev-qa-db-fra.com

Que signifient les différentes couleurs en ls?

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?

342
Rafid
  • Bleu : Répertoire
  • Vert : fichier de données exécutable ou reconnu
  • Bleu ciel : fichier de lien symbolique
  • Jaune avec un fond noir : Périphérique
  • Pink : Fichier d'image graphique
  • Rouge : fichier d'archive
  • Rouge avec un fond noir : lien brisé

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:
    alt text

Remarque:

362
karthick87

Pour savoir quelles couleurs lsutilise en consultant la variable $LS_COLORS:

  • Turquoise: fichiers audio1
  • Rouge vif: archives et fichiers compressés2
  • Violet: images et vidéos3

De plus, les fichiers sont colorés par des attributs:

alt text


  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. 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.

  3. 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.

    • 00 = aucun, 01 = gras, 04 = trait de soulignement, 05 = clignotement, 07 = inverse, 08 = masqué.
  • 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 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 mname__. 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 lsavec l'argument --color=auto (sous Ubuntu, lsest 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.

97
Stefano Palazzo

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 
  • Codes d'attribut: 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 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.

27
Rinzwind

Cela s’étend sur réponse de Karthick87 .


Avec la configuration par défaut

  • Non coloré (blanc) : fichier ou texte sans nom de fichier (par exemple, autorisations dans la sortie de ls -l)
  • Gras bleu : répertoire
  • Bold cyan : lien symbolique
  • Vert clair : fichier exécutable
  • Rouge vif : fichier d'archive
  • Magenta gras : fichier image, vidéo, graphique, etc. ou door ou prise
  • Cyan : fichier audio
  • Jaune avec un fond noir : tuyau (AKA FIFO)
  • Jaune gras avec fond noir : périphérique en mode bloc ou caractère
  • Rouge gras avec fond noir : lien symbolique orphelin ou fichier manquant
  • non coloré avec un arrière-plan rouge : fichier set-user-ID
  • Noir sur fond jaune : fichier set-group-ID
  • Noir avec fond rouge : fichier avec capacité
  • Blanc avec fond bleu : répertoire collant
  • Bleu avec un fond vert : répertoire des autres utilisateurs inscriptibles
  • Noir avec fond vert : répertoire collant et autre inscriptible

Script pour montrer les couleurs

#!/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:

gnome-terminal screenshot

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

gnome-terminal screenshot

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.

20
wjandrea

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é.

Merci à Dan et seebi pour leurs notes et leur code.

18
flickerfly