Que signifient les différentes couleurs en ls?

Qu'est-ce que les différentes couleurs dans Ubuntu ls je veux dire? Par exemple, lorsque je tape le ls commande dans l'un de mes dossiers, j'obtiens l'un des fichiers en vert clair, l'autre (qui est un dossier) en bleu avec surbrillance verte.

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

  • Bleu: Répertoire
  • Vert: Fichier de données exécutable ou reconnu
  • Cyan (Bleu ciel): Fichier de lien symbolique
  • Jaune avec fond noir: Appareil
  • Magenta (Rose): Fichier image graphique
  • Rouge: Fichier d'archive
  • Rouge avec fond noir: Lien brisé

Pour votre 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
  • De plus, si vous souhaitez 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:
terminal output

Note:

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

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

De plus, 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, LZMA, TZ, TZ, zip, z, Z, DZ, gz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, a eye, zoo, tikpio, 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 du texte.

    • 00=aucun, 01=gras, 04=trait de soulignement, 05=clignotement, 07=inverse, 08=caché.
  • La deuxième et la troisième partie 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 qu'elle commence à gauche. c'est-à-dire que "01" signifie gras, "01;31" signifie gras et rouge. Et vous obtiendrez que votre terminal imprime en couleur en échappant l'instruction avec \33[ et le 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.

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 Exécutable, Pipe, etc. Il essaie ensuite de faire correspondre des expressions régulières comme *.wav et imprime le nom de fichier résultant, inclus dans ces instructions de changement de couleur pour bash.

Cela se développe sur Réponse de Karthick87.


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

  • Incolore (blanc): fichier ou texte sans nom de fichier (par exemple, autorisations dans la sortie de ls -l) ou fichier multi-hardlink
  • 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 socket
  • Cyan: fichier audio
  • Jaune avec fond noir: pipe (ALIAS FIFO)
  • Jaune vif avec fond noir: dispositif de bloc ou dispositif de caractère
  • Rouge vif avec fond noir: lien symbolique orphelin ou fichier manquant
  • Sans couleur 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 accessible en écriture
  • Noir avec fond vert: collant et autre-répertoire inscriptible

Notez que le rouge audacieux a l'air orange, le noir a l'air gris foncé, le cyan a l'air bleu/vert et le magenta audacieux a l'air 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"doneecho

Sortie avec configuration par défaut:

gnome-terminal screenshot - default

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

gnome-terminal screenshot - custom

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

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

Si vous tapez dircolors (echo $LS_COLORS fonctionne aussi) à partir de la ligne de commande, vous obtiendrez une liste de codes et de couleurs pour de nombreux types de fichiers en 1 ligne. dircolors --print-database leur montre 1 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 # par défaut global, bien que tout devrait être quelque chose.FICHIER 00 # fileDIR normal 01;34 # directoryLINK 01;36 # lien symbolique. (Si vous définissez cette valeur sur "cible" au lieu d'une valeur numérique#, la couleur est celle du fichier pointé.)FIFO 40;33 # pipeSOCK 01;35 # socketDOOR 01;35 # doorBLK 40;33;01 # pilote de périphérique de blocchr 40;33;01 # pilote de périphérique de caractères Morphan 40;31;01 # lien symbolique vers un fichier inexistant ou un fichier non statiqueetuid 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 autre-inscriptible (+t, o+w)OTHER_WRITABLE 34;42 # dir qui est autre-inscriptible (o+w) et non stickySTICKY 37;44 # dir avec le jeu de bits collant (+t) et non autre-inscriptible# archives ou compressées (rouge vif).goudron 01; 31.tgz 01; 31 # formats d'image.jpg 01;35.jpeg 01;35.gif 01;35.bmp 01; formats audio 35#.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 d'arrière-plan: 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 sur la façon de définir une couleur pour un fichier:

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

Cela définira *.ogg et .mp3 de bold magenta. Et si vous le mettez dans votre .bashrc fichier il deviendra permanent.

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

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

Défaut .bashrc doit déjà être configuré non seulement pour tirer parti du code de couleur du système, mais également d'un code dans ~/.dircolors videz donc la sortie dircolors vers .dircolor donc vous pouvez commencer avec cela en utilisant cette commande.dircolors -p > ~/.dircolors

Alternative: procurez - vous un dircolors de 256 couleurs très similaire de seebi est solarisé projet.

Prends ça script le plus coloré et exécutez-le avec la commande colortest -w ainsi, vous pouvez voir toutes les couleurs à la fois. 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.

Donc, vous avez une couleur, maintenant quoi. Nous devons d'abord créer la chaîne.

Le premier nombre sera un code d'attribut, très probablement 00, mais si vous voulez qu'il clignote, optez pour 05:

Choisissez un code d'attribut: 00=aucun 01=gras 04=trait de soulignement 05=clignotement 07=inverse 08=caché

Choix suivant ajouter ;38;5; à ce code d'attribut pour indiquer la couleur de votre texte pour obtenir 00;38; 5; puis ajoutez votre couleur. J'ai choisi 208 donc je reçois 00;38;5;208.

Si vous souhaitez également y mettre un arrière-plan, choisissez une autre couleur (disons 56) avec le script le plus coloré et l'ajout ;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.

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

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. Utiliser 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 l'insérer 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 trucs spéciaux ;38;5 ou ;48;5. Il suffit de lancer les chiffres dans la chaîne et de profiter de la simplicité.

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