web-dev-qa-db-fra.com

Qu'est-ce qui cause ce fond vert dans la sortie ls?

screencap of ls output on linux machine

Il existe deux répertoires indiqués par "ls". Normalement, les répertoires sont bleu sur fond noir. Mais le premier est bleu sur vert et impossible à lire. Pourquoi est-ce? Comment le rendre bleu sur noir, ou au moins quelque chose de clair sur quelque chose de sombre?

C'est sur Ubuntu 12.04, en utilisant bash dans Gnome Terminal. À Konsole, le bleu est légèrement plus sombre et peut être lu, mais pourrait être bien meilleur.

158
DarenW

Outre les fichiers à colorier en fonction de leur type (turquoise pour les fichiers audio, rouge vif pour les archives et les fichiers compressés et violet pour les images et les vidéos), ls colore également les fichiers et les répertoires en fonction de leurs attributs:

  • Un texte noir sur fond vert indique qu'un répertoire est accessible en écriture par d'autres personnes que l'utilisateur et le groupe propriétaire, et que le bit collant est défini (o+w, +t).
  • Un texte bleu sur fond vert indique qu'un répertoire est accessible en écriture par d'autres personnes que l'utilisateur et le groupe propriétaire, et n'a pas le bit collant défini (o+w, -t).

Stephano Palazzo sur Ask Ubunt a fait cette image très instructive sur les différentes couleurs d'attribut:

What the different colors mean in the terminal

Comme terdon l'a souligné, les paramètres de couleur peuvent être modifiés via dircolors . Une liste des différents paramètres de coloration est accessible avec dircolors --print-database.

Chaque ligne de sortie, telle que BLK 40;33;01, est de la forme:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET indique la cible de la règle de coloration

  • TEXT_STYLE indique le style de texte:

    • 00 = aucun
    • 01 = gras
    • 04 = souligné
    • 05 = clignote
    • 07 = inverse,
    • 08 = caché
  • FOREGROUND_COLOR indique la couleur de premier plan:

    • 30 = noir
    • 31 = rouge
    • 32 = vert
    • 33 = jaune
    • 34 = bleu,
    • 35 = Magenta
    • 36 = cyan
    • 37 = blanc
  • BACKGROUND_COLOR indique les couleurs d'arrière-plan:

    • 40 = noir
    • 41 = rouge
    • 42 = vert
    • 43 = jaune
    • 44 = bleu,
    • 45 = Magenta
    • 46 = cyan
    • 47 = blanc

Les champs peuvent être omis à partir de la droite, donc par exemple .tar 01;31 signifie gras et rouge.

XTerm et la plupart des autres émulateurs de terminaux modernes prennent en charge 256 couleurs.

Un code couleur de premier plan XTerm 256 couleurs se présente sous la forme:

38;5;[FOREGROUND_COLOR]

Un code de couleur d'arrière-plan XTerm 256 couleurs se présente sous la forme:

48;5;[BACKGROUND_COLOR]

où les deux FOREGROUND_COLOR et BACKGROUND_COLOR est un nombre compris entre 0 et 255. Une liste complète des codes de couleur pour les modes 16 et 256 couleurs est présentée dans la capture d'écran ci-dessous:

16 and 256 color mode color codes

176
Thomas Nyman

Les couleurs de ls peuvent représenter les autorisations, la valeur par défaut pour certains systèmes est d'afficher les répertoires où tout le monde a des autorisations d'écriture sur fond vert:

enter image description here

Vous pouvez changer les couleurs en modifiant votre $LS_COLORS variable utilisant dircolors (de man ls):

   Using color to distinguish file types is disabled both by  default  and
   with  --color=never.  With --color=auto, ls emits color codes only when
   standard output is connected to a terminal.  The LS_COLORS  environment
   variable can change the settings.  Use the dircolors command to set it.

La syntaxe est certes un peu ennuyeuse ici, mais vous pouvez changer cette couleur en créant un fichier avec les couleurs que vous souhaitez et en l'enregistrant sous ~/.dircolors:

dircolors -p > ~/.dircolors

Cette commande affichera les valeurs par défaut dans ~/.dircolors. Vous devrez ensuite modifier ce fichier et modifier cette ligne:

OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky

Par exemple, pour en faire du texte noir sur fond rouge (voir ici pour une liste de codes couleurs):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky

Vous n'avez pas besoin d'avoir tous les paramètres par défaut, vous pouvez également simplement créer un fichier avec une seule ligne, redéfinissant uniquement celui que vous souhaitez modifier. Quoi qu'il en soit, une fois le fichier créé, chargez-le avec:

eval "$(dircolors ~/.dircolors)";

Et le voici en action:

enter image description here

Pour que cela se produise automatiquement, ajoutez la commande eval ci-dessus à votre ~/.bashrc fichier.

56
terdon

Bien que toutes les réponses techniques soient vraies, je considérerais cela comme un avertissement informel, que vous avez distribué un peu généreusement les droits de copier ou de croiser ... (le plus souvent, nous le faisons tous, pour que les choses fonctionnent initialement, eh ?)

Comment le rendre bleu sur noir, ...?

Un bon "dégénératif" pour revenir aux droits que vous voulez le plus probablement, est cette déclaration:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/

Mieux compris ce qu'il fait, si vous comprenez le but de majuscule + X "exécution spéciale", c'est-à-dire voir Wikipedia

Il n'est vraiment utile que lorsqu'il est utilisé avec '+' et généralement en combinaison avec l'option -R pour donner à un groupe ou à un autre accès à une grande arborescence de répertoires sans définir l'autorisation d'exécution sur les fichiers normaux (tels que les fichiers texte), ce qui se produirait normalement si vous venez d'utiliser "chmod -R a + rx ...

13
Frank Nocke

J'avais la même question, réponse de terdon est sympa mais je pense qu'il y a une confusion entre dirname et dircolors?

Quoi qu'il en soit, après quelques recherches supplémentaires, je pourrais changer les couleurs, donc je partage ma solution ici. Cela peut être utile à quelqu'un un jour!

Donc, 3 étapes simples:

Tout d'abord, comme l'a dit terdon, copiez les couleurs par défaut dans un fichier

dircolors -p > ~/.dircolors

Modifiez ensuite ce fichier. Vous pouvez trouver des valeurs pour les couleurs à l'intérieur, mais j'en ai trouvé plus ici :)

Et enfin, ajoutez la ligne suivante à votre ~/.bashrc fichier pour les couleurs à charger automatiquement lorsque vous ouvrez un terminal:

eval 'dircolors ~/.dircolors' > /dev/null

Voilà :)

9
KevinG

Pour résoudre rapidement le problème, (rendez les fichiers non inscriptibles jaunes sur nobg):

LS_COLORS+=':ow=01;33'

Remplacer 33 par 34 pour bleu sur nobg. Encore plus simple, pour le faire nofg sur nobg:

LS_COLORS+=:ow=

Pour rendre votre modification permanente, ajoutez-la à votre .profile:

echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile

Pour afficher les règles non liées à l'extension de LS_COLORS:

echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'

sed place chaque règle sur une seule ligne et grep supprime les règles commençant par *.'.


Pour explorer les couleurs ls sur votre terminal, pensez à utiliser

C="$LS_COLORS"
function sc () {
    echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
    ls /mnt # Or the path to your example directory.
}

Alors

LS_COLORS="$C:ow=38;5;250;48;5;025";t

Comme indiqué dans une autre réponse (celle de Thomas Nyman), 38;5; est le préfixe des 256 couleurs x-term de premier plan, et 48;5; pour le fond x-term 256 couleurs. Cependant, 256 couleurs ne sont pas prises en charge par tous les terminaux.

Voir aussi - Que signifient les différentes couleurs dans ls? - sur AskUbuntu.

6
loxaxs

Pour résoudre ce problème, essayez le paramètre ow sur LS_COLORS

Par exemple:

~LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.Zip=33:*.tgz=33'
~ls -l

enter image description here

Maintenant, vous ajoutez le ow (OTHER_WRITABLE) option

~export LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.Zip=33:*.tgz=33:ow=0'
~ls -l

enter image description here

1
PYK

Eh bien, cela signifie que ce dossier a des autorisations si vous exécutez ceci:

cela supprimera bgcolor :)

1

Vous pouvez changer le ton de vert dans PuTTY pour rendre le texte lisible.

Ouvrez PuTTY et allez dans Window\Colors, sélectionnez "ANSI Green", réglez-le sur un vert plus foncé (R: 0 G: 70 B: 0).

0
Erhan Alankus