Quest-ce qui cause ce fond vert dans la sortie ls?

screencap de la sortie ls sur une machine Linux

Il y a deux répertoires affichés par « ls ». Normalement, les répertoires nimporte où sont bleus 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?

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

Réponse

En dehors de la coloration les fichiers 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 répertoires en fonction de leurs attributs:

  • Un texte noir avec un arrière-plan vert indique quun répertoire est accessible en écriture par dautres personnes en dehors de lutilisateur et du groupe propriétaires, et a le bit sticky défini (o+w, +t) .
  • Le texte bleu sur fond vert indique qu’un répertoire est accessible en écriture par d’autres personnes en dehors de l’utilisateur et du groupe propriétaire, et n’a pas le bit sticky défini (o+w, -t).

Stephano Palazzo à Ask Ubuntu a fait cette image très instructive sur les différentes couleurs dattributs:

Wh à la signification des différentes couleurs dans le terminal

Comme la souligné terdon , 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 = bold
    • 04 = underscore
    • 05 = blink
    • 07 = reverse,
    • 08 = masqué
  • 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 darrière-plan:

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

Les champs peuvent être omis en commençant par 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 est de la forme:

38;5;[FOREGROUND_COLOR] 

Un code couleur darrière-plan XTerm 256 couleurs est de la formulaire:

48;5;[BACKGROUND_COLOR] 

FOREGROUND_COLOR et BACKGROUND_COLOR est un numérotez la plage de 0 à 255. Une liste complète des codes de couleur pour les modes de couleur 16 et 256 est indiquée dans la capture décran ci-dessous:

16 et 256 codes couleur du mode couleur

Commentaires

  • Les codes BACKGROUND_COLOR ne sont pas les mêmes que FOREGROUND_COLOR; Les codes darrière-plan sont 40-47
  • 38;5; commence un code de couleur de premier plan xterm 256 couleurs . 48;5; démarre un code de couleur darrière-plan xterm 256 couleurs. Le cyan dans ma sortie dircolors est 38;5;51 pas 36 bien que le résultat soit le même.
  • @stevesliva: Merci pour votre commentaire. Jai ‘ modifié la réponse pour indiquer correctement les codes de couleur darrière-plan et décrire les codes de couleur de premier plan et darrière-plan en 256 couleurs.
  • alors quest-ce que le vert uniquement au premier plan moyenne? comme si javais ici ?
  • @ChagaiFriedlander: Fichiers exécutables (voir la ligne du bas dans limage ).

Réponse

Les couleurs de ls peuvent représenter les permissions , la valeur par défaut pour certains systèmes est dafficher les répertoires sur lesquels tout le monde a les droits décriture sur fond vert:

entrez la description de limage ici

Vous pouvez changer les couleurs en modifiant votre variable $LS_COLORS à laide de dircolors (à partir 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 voulez et en lenregistrant sous ~/.dircolors:

dircolors -p > ~/.dircolors 

Cette commande affichera les valeurs par défaut dans ~/.dircolors. Vous devrez ensuite éditer ce fichier et changer 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 des codes de couleur):

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

Vous navez pas besoin davoir toutes les valeurs par défaut , vous pouvez également créer simplement un fichier avec une seule ligne, en redéfinissant uniquement celui que vous souhaitez modifier. Quoi quil en soit, une fois que vous avez créé le fichier, chargez-le avec:

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

Et le voici en action:

entrez la description de limage ici

Pour que cela se produise automatiquement, ajoutez le eval ci-dessus dans votre fichier ~/.bashrc.

Commentaires

  • Les couleurs par défaut semblent souvent indiquer que lauteur original nous déteste et nos yeux cependant …
  • Merci. Pourquoi écrivez-vous parfois ~ / .dirname, et parfois ~ / dircolors, et parfois ~ / .dircolors? sont-ils censés être les mêmes?
  • Th anks. Pourquoi eval "$(dircolors ~/dircolors)"; au lieu dune manière plus directe comme dircolors ~/dircolors?
  • @Tim car dircolors nimprime que les paramètres, vous besoin de lévaluer pour quils soient lus.
  • pour quils soient lus par qui?

Réponse

Bien que toutes les réponses techniques soient vraies, je considérerais cela un peu comme un avertissement informel, que vous ayez accordé un peu le droit de copier généreusement ou de copier criss + cross … (le plus souvent, nous le faisons tous , pour faire fonctionner les choses au départ, hein?)

Comment le rendre bleu sur noir, …?

Voici cette déclaration:

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

pour revenir aux droits que vous souhaitez probablement. Mieux comprendre ce quil fait, si vous comprenez le but des majuscules + X «exécution spéciale», cest-à-dire voir Wikipédia

Il nest vraiment utile que lorsquil est utilisé avec « + » et généralement en combinaison avec loption -R pour donner à un groupe ou à un autre accès à une grande arborescence de répertoires sans définir lautorisation dexécution sur les fichiers normaux (tels que les fichiers texte), ce qui se produirait normalement si vous utilisiez simplement « chmod -R a + rx …

Réponse

Voici les 3 étapes que jai utilisées pour changer les couleurs:

Copiez dabord les couleurs par défaut dans un fichier

dircolors -p > ~/.dircolors 

Puis modifiez ce fichier. Vous pouvez trouver quelques valeurs pour les couleurs à lintérieur, et en voici dautres:

Code Color 0 Default Colour 1 Bold 4 Underlined 5 Flashing Text 7 Reverse Field 31 Red 32 Green 33 Orange 34 Blue 35 Purple 36 Cyan 37 Grey 40 Black Background 41 Red Background 42 Green Background 43 Orange Background 44 Blue Background 45 Purple Background 46 Cyan Background 47 Grey Background 90 Dark Grey 91 Light Red 92 Light Green 93 Yellow 94 Light Blue 95 Light Purple 96 Turquoise 100 Dark Grey Background 101 Light Red Background 102 Light Green Background 103 Yellow Background 104 Light Blue Background 105 Light Purple Background 106 Turquoise Background 

( source )

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

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

Pour ~/.zshrc:

if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi 

Réponse

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

LS_COLORS+=":ow=01;33" 

Remplacez 33 par 34 pour le bleu sur nobg. Encore plus simple, pour le rendre 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 aux extensions de LS_COLORS:

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

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


À explorez 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. } 

Puis

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 du terme x de premier plan 256 couleurs, et 48;5; pour 256 couleurs darrière-plan x-term. Cependant, 256 couleurs ne sont pas prises en charge par tous les terminaux.

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

Commentaires

  • Jai trouvé en train de déposer LS_COLORS+=':ow=01;33' dans mon ~/.zshrc a aidé à désactiver la couleur de fond pour les répertoires dans un git-repo.Ceci est sur une machine Windows 10 avec une distribution Pengwin-WSL. Désormais, tous les répertoires de git-repo sont lisibles.

Réponse

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

сhmod og-w AU_LI

il supprimera bgcolor 🙂

Réponse

Pour résoudre ce problème, essayez le ow au paramètre 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 

entrez la description de limage ici

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 

entrez la description de limage ici Bamm !!

Commentaires

Réponse

Vous pouvez changer le ton du 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).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *