web-dev-qa-db-fra.com

Comment désactiver la couleur avec `ls`?

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?

51
iconoclast

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.

74
slm

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.)

28
200_success

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.

3
esilence

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 
2
James Aanderson

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.

2
James Gawron
alias ls=ls

ou

unalias ls

Cela désactive définitivement les colorations.

2
Slyx

utiliser la commande

unalias ls

cela l'obligera à utiliser la norme ls pendant la session

1
bobk

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.

0
brian d foy

Pour désactiver la couleur: unalias ls

Pour activer la couleur: alias ls = 'ls --color = auto'

Pour désactiver temporairement la couleur:\ls -ltr

0
Ravichandran K