Que signifient les différentes couleurs en ls?


364

Que lssignifient les différentes couleurs dans la commande d'Ubuntu ? Par exemple, lorsque je tape la lscommande 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?

Réponses:


391
  • Bleu : Annuaire
  • Vert : fichier de données exécutable ou reconnu
  • Bleu ciel : fichier de lien symbolique
  • Jaune avec fond noir : appareil
  • Rose : fichier image graphique
  • Rouge : fichier d'archive
  • Rouge avec 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:
    texte alternatif

Remarque:


28
Ce evalscript montrant la représentation des couleurs de sortie pour chaque type est brillant ... merci!
Russ

2
Pure Sourery;)
Homunculus Reticulli

5
Une version plus lisible de ce evalscript est ici: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Gautam

3
Le rouge est aussi un lien symbolique mort.
Thomas Ward

1
Qu'en est-il des fichiers en texte blanc normal?
S ..

98

Vous pouvez trouver les couleurs utilisées lsen regardant la $LS_COLORSvariable:

  • Turquoise: fichiers audio 1
  • Rouge vif: archives et fichiers compressés 2
  • Violet: images et vidéos 3

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

texte alternatif


  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, mgv, 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 leur formatage 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 = inversion, 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. c'est-à-dire que "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. 33, ou 1B en hexadécimal, est le signe ASCII "ESCAPE" (un caractère spécial dans le 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(sur Ubuntu, lsest un alias pour ls --color=auto) parcourt 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.


Merci! J'étais en train de regarder une question sur la visualisation de la topologie Git et je me suis demandé pourquoi certains caractères étaient en cours d'impression.
Pdp

27

Si vous tapez dircolors( echo $LS_COLORSfonctionne é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-databaseleur 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 default, même si tout devrait être quelque chose.
FILE 00 # fichier normal
Répertoire DIR 01; 34 #
LINK 01; 36 # lien symbolique. (Si vous définissez ceci sur 'cible' au lieu d'un
 # valeur numérique, la couleur est celle du fichier indiqué.)
FIFO 40; 33 # pipe
SOCK 01; 35 # socket
PORTE 01; 35 # porte
BLK 40; 33; 01 # pilote de périphérique de bloc
Pilote de périphérique CHR 40; 33; 01 #
ORPHANE 40; 31; 01 # un lien symbolique vers un fichier inexistant, ou un fichier non statable
SETUID 37; 41 # fichier qui est setuid (u + s)
SETGID 30; 43 # fichier qui est setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir est collant et inscriptible (+ t, o + w)
OTHER_WRITABLE 34; 42 # répertoire non inscriptible (o + w) et non collant
STICKY 37; 44 # dir avec le bit collant défini (+ t) et non inscriptible
# archives 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'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 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"  

Cela va définir *.ogget .mp3à bold magenta. Et si vous le mettez dans votre .bashrcdossier, il deviendra permanent.


2
Hey peut-être que quelqu'un d'autre vient avec une meilleure réponse. Au fait, vous m'avez eu plus de 15k avec ce vote positif;)
Rinzwind

rock On! Vous vous y êtes rendu ... Merci encore une fois, j'ai fait une "chaîne" pour rechercher certaines des couleurs sur
lesquelles

Cette (excellente) réponse a été fusionnée , au cas où vous vous interrogeriez sur les dates. :-)
Stefano Palazzo

@Rinzwind, afin de définir une couleur pour le pdffichier, le processus consiste à utiliser export? Est-il possible d'ajouter simplement une extension dans la LS_COLORS variable par défaut ?
Sigur

23

Cela étend la réponse de Karthick87 .


Avec la configuration par défaut

  • Uncolored (white) : fichier ou texte sans nom de fichier (par exemple, autorisations dans la sortie de ls -l)
  • Bleu gras : répertoire
  • Cyan gras : lien symbolique
  • Vert clair : fichier exécutable
  • Gras rouge : fichier d'archive
  • Magenta gras : fichier image, vidéo, graphique, etc. ou porte ou prise
  • Cyan : fichier audio
  • Jaune avec fond noir : pipe (AKA FIFO)
  • Gras jaune avec fond noir : périphérique bloc ou périphérique de caractère
  • Rouge gras sur fond noir : lien symbolique orphelin ou fichier manquant
  • Uncolored avec un arrière - plan 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 : répertoire autre-inscriptible
  • Noir avec fond vert : répertoire collant et 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:

capture d'écran gnome-terminal

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

capture d'écran gnome-terminal

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

Les couleurs et les descriptions sont les mêmes du 14 avril au 17 octobre.


Comment avez - vous des rsmoyens RESET, des mhmoyens MULTIHARDLINK, des camoyens , CAPABILITYetc.?
Fredrick Gauss

@FredrickGauss Comme je l'ai écrit dans ma réponse, la description m'a été fournie dircolors -p.
wjandrea

dircolors -pne dit pas que rs est RESET 0 # réinitialisé à la couleur "normale" .
Fredrick Gauss

@FredrickGauss Pas explicitement, mais "RESET" est le seul qui peut être abrégé en "rs", et la couleur (0) correspond.
Wjandrea

18

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 ennuis), de sorte que le répertoire bleu par défaut sur le noir est vraiment difficile à lire. Ce qui suit est ma recherche pour changer cela.

Tapez dircolors -p |lesspour 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: procurez-vous une dircolore de 256 couleurs très similaire dans le projet solarisé de seebi .

Saisissez ce script le plus intéressant et exécutez-le avec la commande colortest -wafin de 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 code pour indiquer la couleur de votre texte pour obtenir 00; 38; 5; et ensuite ajouter votre couleur. J'ai choisi 208 alors 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 coûteux et l'ajout ;48;5;pour l'arrière-plan 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) en 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 ~/.dircolorsle code get 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.


veuillez vérifier si 256 couleurs ne fonctionneront que sur des terminaux compatibles xterm . Ainsi, 256 couleurs ne fonctionnent pas pour moi avec Konsole, mais fonctionnent avec xterm et rxvt-unicode .
DK Bose

1
Konsole fait sa propre chose. Consultez draculatheme.com/konsole ou techoverflow.net/2013/11/08/installing-konsole-solarized-theme pour un joli jeu de couleurs.
papillotement
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.