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.
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:
o+w, +t
).o+w, -t
).Stephano Palazzo sur Ask Ubunt a fait cette image très instructive sur les différentes couleurs d'attribut:
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
= aucun01
= gras04
= souligné05
= clignote07
= inverse,08
= cachéFOREGROUND_COLOR
indique la couleur de premier plan:
30
= noir31
= rouge32
= vert33
= jaune34
= bleu,35
= Magenta36
= cyan37
= blancBACKGROUND_COLOR
indique les couleurs d'arrière-plan:
40
= noir41
= rouge42
= vert43
= jaune44
= bleu,45
= Magenta46
= cyan47
= blancLes 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:
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:
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:
Pour que cela se produise automatiquement, ajoutez la commande eval
ci-dessus à votre ~/.bashrc
fichier.
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 ...
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à :)
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.
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
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
Eh bien, cela signifie que ce dossier a des autorisations si vous exécutez ceci:
cela supprimera bgcolor :)
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).