I colori in bash dopo il piping attraverso meno?


106

Quando ho definito i dircolors la vita è piena di ... colore.

Quando ho il tubo lsattraverso lessper scorrere intorno perdo i colori.

Eventuali suggerimenti?

Risposte:


105

Molto probabilmente il tuo lsè alias ls --color=auto, il che dice lsdi usare i colori solo quando il suo output è un valore. Se lo fai ls --color(che è moralmente equivalente a ls --color=always), questo lo costringerà ad attivare i colori.

Potresti anche cambiare il tuo alias per farlo, ma non lo definirei davvero una buona idea. Meglio creare un diverso alias con --color.

lessanche esigenze -R.


5
Perché non la chiameresti una buona idea come alias ls --coloro ls --color=always, del resto ?
j08lue,

10
@ j08lue se si inoltra un comando che non gestisce il colore, si ottengono alcuni caratteri spazzatura che potrebbero confondere il comando. Ad esempio, l'ho fatto ls --color=always | lesse ottenuto: ESC[01;32mexecute_once.shESC[0m(So ​​che questo è vecchio e probabilmente non ti interessa, ma per i futuri visitatori, questo potrebbe essere utile)
Ryan Amos,

55

Prova di meno con l'opzione -R in questo modo:

command | less -R

Questo funziona per me in un one-liner come questo:

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

E così anche:

ls --color | less -R

Ma devi modificare un po 'l'output primario (in questo caso l'output di ls) con il parametro --color.


Grazie, questo funziona anche per ack-grep. ack-grep my_string --color | meno -R
igniteflow

1
--colore non riconosciuto: ls: opzione illegale - - Esecuzione di bash su osx.
Scott Biggs,

1
@Scott Biggs: in OSX non c'è --color; prova ls -G

@ Lu-Chi, anche con -Gi colori mancanti
Iulian Onofrei

1
L' -Ropzione è l'abbreviazione di --RAW-CONTROL-CHARS.
Rory O'Kane,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.