Il est normalement agréable d'avoir une sortie couleur depuis ls
, grep
, etc. Mais quand vous ne le voulez pas (comme dans un script où vous redirigez les résultats vers une autre commande) y a-t-il un interrupteur qui peut le désactiver? ls -G
l'allume (avec certains versions dérivées de BSD de ls
) si ce n'est pas la valeur par défaut, mais ls +G
ne le désactive pas. Y a-t-il autre chose qui le fera?
La sortie couleur pour ls
est généralement activée via un alias dans la plupart des distributions de nos jours.
$ alias ls
alias ls='ls --color=auto'
Vous pouvez toujours désactiver temporairement un alias en le préfixant avec une barre oblique inverse.
$ \ls
Faire ce qui précède court-circuitera l'alias juste pour cette seule invocation. Vous pouvez l'utiliser à tout moment pour désactiver un alias.
Avec GNU ls
, vous pouvez spécifier ls --color=never
pour désactiver explicitement la sortie couleur. (Même si vous avez un alias ls='ls --color=auto'
, lorsque vous exécutez ls --color=never
, il s'étendra à ls --color=auto --color=never
, et la dernière option est prioritaire.)
Vous pouvez également simplement utiliser (comme sous DOS):
dir
Il affichera les résultats sans couleur, vous pouvez ajouter les mêmes arguments à ls
, comme -l
.
Dans de nombreuses distributions Linux, cette option est activée par défaut dans les utilisateurs .bashrc
.
Éditer ~/.bashrc
et supprimez la ligne qui ressemble à:
alias ls='ls --color=auto'
Si vous souhaitez désactiver cette fonctionnalité pour tous les nouveaux comptes générés sur cette machine à l'avenir, supprimez la même ligne de:
/etc/skel/.bashrc
Sur Centos7, cela est défini dans /etc/profile.d/colorls.sh
... Les 3 dernières lignes de ce script sont:
alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null
Si vous avez le désir et les autorisations ... commenter la ligne indésirable devrait faire l'affaire.
alias ls=ls
ou
unalias ls
Cela désactive définitivement les colorations.
utiliser la commande
unalias ls
cela l'obligera à utiliser la norme ls
pendant la session
Il pourrait se passer autre chose. ls
ne doit pas utiliser de couleurs sauf s'il pense qu'il est connecté à quelque chose d'interactif. Cela ne devrait pas coloriser les choses lorsque vous dirigez vers un autre programme.
Un alias est généralement une mauvaise idée car vous ne pouvez jamais vous débarrasser de cette option et vous vous habituez à des paramètres personnels que vous ne pourrez peut-être pas emporter avec vous sur une autre machine sur laquelle vous devrez travailler. Si vous devez l'éteindre pour le rediriger vers autre chose, utilisez l'interrupteur dans ce tube. Mais, les couleurs ne devraient pas être là dans un tuyau.
Pour ls
, voyez si le vôtre prend en charge le LS_COLORS
variable d'environnement. Le trapd00r/LS_COLORS vous montre comment cela fonctionne. dircolors vous permet d'ajuster les couleurs minutieusement et par type de fichier. Si vous ne définissez pas LS_COLORS
mais lorsque la coloration est activée, ls
fera un tas d'appels système pour déterminer les types de fichiers et les attributs afin de savoir quoi colorer. Les gens derrière Sherlock ont trouvé que le paramètre LS_COLORS
peut éviter tout cela et donner un 40x amélioration de la vitesse . Lisez leurs détails sanglants pour voir ce qu'ils ont trouvé.
Je fais en sorte que tous les types de fichiers utilisent les couleurs par défaut:
$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'
Voici le fichier LS_COLORS que j'ai alimenté aux dircolors:
BLK 0
CAPABILITY 0
CHR 0
DIR 0
DOOR 0
EXEC 0
FIFO 0
FILE 0
LINK 0
MULTIHARDLINK 0
NORMAL 0
Orphan 0
OTHER_WRITABLE 0
SETGID 0
SETUID 0
SOCK 0
STICKY 0
STICKY_OTHER_WRITABLE 0
Pour grep
, voyez si le vôtre prend en charge GREP_COLORS
ou GREP_OPTIONS
.
Pour désactiver la couleur: unalias ls
Pour activer la couleur: alias ls = 'ls --color = auto'
Pour désactiver temporairement la couleur:\ls -ltr