Se eu executar ls
, recebo uma saída colorida, que acho bastante útil para obter rapidamente uma olhada no tipo de arquivo. Quando tento canalizá-lo até less
mesmo com as bandeiras -r
e -R
, a coloração sempre se perde. Estou usando a zsh
versão 5.0.7. Alguma ideia? Obrigado.
edit: Estou no OS X.
ls
está sendo chamado--color
? Tente suspender a tubulação (^Z
) ou usar aps
partir de outro terminal. Que saídawhich ls
produz?less -r
por isso não é um problema,less
mas comls
ls
resultado depende do stdout). O que eu lembro é unix.stackexchange.com/questions/157285/…, que é marcado como duplicado de unix.stackexchange.com/questions/10421/…ls --color=auto
significa usar cores somente ao escrever em um terminal (ou seja, quando a saída padrão é um terminal), e não quando é um arquivo ou um pipe.Respostas:
Isso ocorre por design: os programas que produzem saída colorida geralmente o fazem apenas quando a saída é direcionada para um terminal, não quando é enviada para um pipe ou para um arquivo comum. O motivo é que os dados enviados em um terminal são presumivelmente lidos por um ser humano, enquanto os dados canalizados para um programa ou gravados em um arquivo provavelmente serão analisados por algum programa, portanto, não devem conter conteúdo estranho, como sequências de escape que mudam de cor .
O GNU
ls
exibe uma saída colorida em um terminal quando você passa na opção--color
(ou--color=auto
). Para forçar a saída colorida, independentemente do tipo de arquivo da saída padrão, passe--color=always
ou--color=yes
(são sinônimos). Esta convenção foi seguida por outros comandos, como GNU grep, FreeBSD grepgit diff
, etc.Com a versão do FreeBSD
ls
(também encontrada no OSX e disponível comocolorls
porta no OpenBSD e NetBSD), passe a opção-G
de exibir cores quando a saída for um terminal. Defina o ambienteCLICOLOR_FORCE
para exibir cores, independentemente do tipo de arquivo de saída.fonte
O problema provavelmente é que seu
ls
programa configurou a opção, o--color=auto
que basicamente significa que a saída deve ser colorida somente se estiver conectada ao terminal; caso contrário (saída conectada a um tubo ou arquivo), nenhuma cor será emitida.Se você deseja ter cores nesses casos, defina a
--color
opção comoalways
, então tenteSe esse comportamento é o que você espera o tempo todo, basta criar um alias:
fonte
ls
não vembash
, é um programa independente. Executels --version
para verificar sua versão. O meu é o seu núcleo GNU) 8.21 .ls
versão não tem a--version
bandeira. Estou usando o padrão do OS X, não tenho certeza se isso ajuda.Não posso comentar a resposta de @jimmij, porque tenho menos de 50 representantes, mas gostaria de explicar o que funcionou para mim no Bash.
Se você correr
você verá todas as entradas da página
man
para o seu ambiente shell específico (no nosso casobash
).Para mim, o seguinte ajuste fez o truque:
fonte
-G
bandeira não tem nada a ver com o modo comols
gerencia sua saída colorida. Isso apenas remove os grupos da saída dels -l
. Isso afeta a saída de cores no BSD ls (também usado no OSX), é isso que você quer dizer? De qualquer forma, não acho que isso mostrará cores quando redirecionado para um arquivo, apenas mostrará cores na linha de comando.