Question Que signifient les différentes couleurs dans ls?


Que font les différentes couleurs dans Ubuntu ls commande signifie? Par exemple, quand je tape le ls commande dans l'un de mes dossiers, je reçois l'un des fichiers en vert clair, l'autre (qui est un dossier) en bleu avec une surbrillance verte.

Que signifient ces couleurs et qu'il existe un manuel sur toutes les couleurs?


298
2017-12-14 08:15


origine




Réponses:


  • Bleu: Répertoire
  • vert: Fichier de données exécutable ou reconnu
  • Bleu ciel: Fichier de lien symbolique
  • Jaune avec fond noir: Dispositif
  • 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 couleur 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: 


306
2017-12-14 08:18



Cette eval Le script montrant la représentation des couleurs de sortie pour chaque type est génial ... merci! - Russ
Pur sourcery;) - Homunculus Reticulli
Une version plus lisible de cette eval le script est ici: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Le rouge est également un lien symbolique mort. - Thomas Ward♦
Qu'en est-il des fichiers en texte blanc normal? - S..


Vous pouvez trouver quelles couleurs ls utilise en regardant le $LS_COLORS variable:

  • Turquoise: fichiers audio1
  • Bright Red: Archives et fichiers compressés2
  • Purple: 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. tar, tz, arj, taz, lzma, tlz, tz, tz, 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, xb, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, 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 son formatage est plutôt illisible.

Voici une explication technique de ce qui se passe:

Exemple:

CHR 40;33;01

Le code 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 = clignote, 07 = inverse, 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 partant de la gauche. c'est-à-dire "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 terminant avec 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 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. Il essaie ensuite de faire correspondre les expressions régulières comme * .wav et affiche le nom de fichier résultant, inclus dans ces instructions de changement de couleur pour bash.


86
2017-12-14 08:57



Merci! Je regardais un Visualisation de la topologie Git  question et se demandait pourquoi certains caractères étaient imprimés. - pdp


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 dans 1 ligne. dircolors --print-database leur montre 1 ligne à la fois. Voici une courte liste (j'ai essayé de mettre les plus importantes). En bas, il y a une explication sur ce que représentent les différents codes à la fin de chaque ligne:

NORMAL 00 # valeur par défaut globale, 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'un
 # valeur numérique, la couleur est celle du fichier pointé.)
FIFO 40; 33 # pipe
SOCK 01; prise de 35 #
PORTE 01; porte de 35 #
BLK 40; 33; 01 # bloquer le pilote de périphérique
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-stat'able
SETUID 37; 41 # fichier qui est setuid (u + s)
SETGID 30; 43 # fichier qui est setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir qui est collant et accessible en écriture (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir qui est accessible en écriture autre (o + w) et non collant
STICKY 37; 44 # dir avec le bit sticky défini (+ t) et non inscriptible
# archives ou compressés (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"  

Cela va définir *.ogg et .mp3 à bold magenta. Et si vous le mettez dans votre .bashrc le fichier deviendra permanent.


27
2017-09-14 08:25



Hé peut-être que quelqu'un d'autre vient avec une meilleure réponse. Btw vous m'avez eu plus de 15k avec cette note positive;) - Rinzwind
rock On! Vous avez vous-même là ... Merci encore cependant, j'ai fait une / « chaîne » pour rechercher sur quelques-unes des couleurs que je ne savais pas trop - user784637
Cette (excellente) réponse était fusionné, au cas où vous vous interrogeriez sur les dates. :-) - Stefano Palazzo♦
@Rinzwind, donc pour définir une couleur pour pdf fichier, le processus doit utiliser export? Est-il possible d'ajouter simplement une extension dans la valeur par défaut LS_COLORS  variable? - Sigur


Aucune des réponses ne comprend les options de 256 couleurs des dernières versions d'Ubuntu. Je manque de couleur (certaines couleurs me causent des problèmes les unes aux autres), donc le répertoire bleu par défaut sur le noir est vraiment difficile à lire. Ce qui suit est ma recherche pour changer cela.

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

La valeur par défaut de .bashrc doit déjà être configurée non seulement pour tirer parti du code couleur du système, mais aussi de ~ / .dircolors. Par conséquent, sauvegardez la sortie dircolors dans .dircolor pour pouvoir utiliser cette commande. dircolors -p > ~/.dircolors

Alternative: ramasser un dircolors 256 couleurs très similaires de seebi's solarisé projet.

Prenez ceci script de couleur et l'exécuter avec la commande colortest -w afin que vous puissiez voir toutes les couleurs à la fois. Choisir une couleur. J'aime le orange # 208. Je veux que ce soit la couleur du texte, en utilisant ces informations sur les codes de couleurs étendus, je peux appliquer cela.

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, très probablement 00, mais si vous voulez qu’il clignote, passez à 05:

Choisissez un code d'attribut: 00 = aucun 01 = gras 04 = soulignement 05 = clignote 07 = retour 08 = caché

Sélection suivante ;38;5; à ce code d'attribut pour indiquer votre couleur de texte pour obtenir 00; 38; 5; puis ajoutez votre couleur. J'ai choisi 208 pour obtenir 00;38;5;208.

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

Alors maintenant vous l'avez, qu'est-ce que vous en faites?

vim ~/.dircolors et trouvez la section que vous souhaitez modifier (pour moi qui est DIR) à la chaîne, nous avons déterminé ci-dessus « 00; 38; 5; 208 ».

Cela ne s'appliquera pas immédiatement, vous devrez charger la configuration. Utilisation dircolors ~/.dircolors au 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 transférer cela dans un fichier et l'exécuter en tant que script shell.

Vous pouvez faire cette même procédure avec 16 couleurs. Vous n'avez pas besoin de la spéciale 38, 5 ou 48; 5 choses. Il suffit de lancer les chiffres dans la chaîne et de profiter de la simplicité.

Grâce à Dan et seebi pour leurs notes et leur code à ce sujet.


15
2018-03-22 20:45





Cela se développe sur La réponse de Karthick87.


Avec la configuration par défaut

  • Non coloré (blanc): fichier ou texte sans nom de fichier (par exemple, des autorisations dans la sortie de ls -l)
  • Bleu vif: répertoire
  • Cyan gras: lien symbolique
  • Vert audacieux: fichier exécutable
  • Rouge vif: 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)
  • Jaune gras avec fond noir: bloquer le périphérique ou dispositif de caractère
  • Gras rouge avec fond noir: lien symbolique orphelin ou Fichier manquant
  • Non coloré avec fond rouge: set-user-ID file
  • 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 accessible en écriture
  • 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 (dircolors personnalisés et thème terminal personnalisé Solarized):

gnome-terminal screenshot

J'ai les descriptions de dircolors -p et man dir_colorset comblé les lacunes avec mes propres recherches.

Les couleurs et les descriptions sont les mêmes du 14.04 au 17.10.


14
2018-02-17 21:05



Comment avez-vous su rs veux dire RESET, mh veux dire MULTIHARDLINK, ca veux dire CAPABILITY etc? - Fredrick Gauss
@FredrickGauss Comme je l'ai écrit dans la réponse, j'ai eu des descriptions de l'exécution dircolors -p. - wjandrea
dircolors -p ne dit pas rs est RESET 0 # réinitialise à 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
Je demande ça. Vous venez d'estimer, en déduire. - Fredrick Gauss