Question Couleurs en bash après avoir traversé moins?


Quand j'ai dircolors défini la vie est pleine de ... couleur.

Quand je pipe ls à travers less faire défiler je perds les couleurs.

Aucune suggestion?


93
2018-06-16 13:30


origine




Réponses:


Très probablement votre ls est aliasé à ls --color=autoqui raconte ls utiliser uniquement des couleurs lorsque sa sortie est un tty. Si tu fais ls --color (qui est moralement équivalent à ls --color=always), cela l'obligera à allumer les couleurs.

Vous pouvez également changer votre pseudonyme pour le faire, mais je n'appellerais pas cela une bonne idée. Mieux vaut faire un alias différent avec --color.

less Besoins -R, aussi.


95
2018-06-16 13:38



Pourquoi ne l’appeleriez-vous pas une bonne idée d’alias ls to ls --color ou ls --color=always, d'ailleurs? - j08lue
@ j08lue Si vous dirigez une commande qui ne gère pas la couleur, vous obtenez des caractères indésirables qui peuvent gâcher la commande. Par exemple, j'ai fait ls --color=always | less et j'ai: ESC[01;32mexecute_once.shESC[0m (Je sais que c'est vieux et que vous ne vous en souciez probablement pas, mais cela pourrait être utile aux futurs visiteurs) - Ryan Amos
@RyanAmos en tant que futur visiteur, merci. :) - malvim


Essayez moins avec l'option -R comme ceci:

command | less -R

Cela fonctionne pour moi dans un one-liner comme ceci:

ls -la | grep --color=always bash | less -r

Et comme ça aussi:

ls --color | less -R

Mais vous devez modifier légèrement la sortie primaire (la sortie de ls dans ce cas) avec le paramètre --color.


51
2018-06-16 13:33



Merci, cela fonctionne également pour ack-grep. ack-grep my_string --color | moins -R - igniteflow
--color n'est pas reconnu: ls: option non autorisée - - Exécuter bash sur osx. - Scott Biggs
@Scott Biggs: sous OSX, il n'y a pas de couleur; essayez ls -G
@ Lu-Chi, même avec -G, les couleurs manquent - Iulian Onofrei
Sous OS X, vous devez définir la variable d'environnement CLICOLOR_FORCE (sur quoi que ce soit) lorsque la sortie de ls n'est pas dirigée vers un terminal. Cela fonctionne pour moi: CLICOLOR_FORCE = ls -G | moins -R - jooon