Tubería de la salida de ls o árbol para perder menos colores?

12

treey lspuede distinguir los tipos de archivo coloreando los nombres de archivo de manera diferente

treey a lsmenudo genera una larga lista de archivos (incluidos los directorios), por lo que canalizo la salida stdout a less.

Pero lessno conserva los colores. ¿Cómo podemos hacer que muestre colores o algunas formas alternativas?

Acabo de ver la lista vinculada, pero la tubería less -Ro less -rno funciona. Mi sistema operativo es Ubuntu 12.04. lesses la versión 444: 09 de junio de 2011.

Tim
fuente
1
@JosephR. La otra pregunta está medio relacionada pero no es un duplicado. Aquí estamos hablando ls(no tree) por lo que algunas implementaciones necesitan que se les diga que fuercen la salida de color cuando la salida no va a una terminal (además de less -Rser necesaria)
Stéphane Chazelas
¿Lo has intentado tree -C | less -R? La -Copción es el equivalente en árbol de menos --color=always, creo (al menos funciona para mí, en Ubuntu 12.04).
steeldriver
@steeldriver gracias. funciona. treecon y sin -Csolo siempre salida en colores, pero ¿por qué son diferentes cuando se usan con less?
Tim
@Tim 2 razones: 1. lessElimina los colores por defecto a menos que usted le da la -Ropción, que le dice que lo deje en, y 2. treee lsy otros programas por lo general se vuelven colorear fuera cuando detectan su producción va a otro programa (como less) en lugar de directamente a su terminal, a menos que fuerce la coloración con -Co --color=always.
jw013
2
¿De qué es esta lista vinculada que escribes?
Anthon

Respuestas:

15

Asumiré que está usando ls --color=auto, lo que le indica lsque use el color en modo 'automático'. El modo 'Automático' le dice lesssi STDOUT es un terminal, y si es así, use color, de lo contrario no use color. Cuando se canaliza lsen lessstdout no es un terminal, que está conectado a STDIN less, que es un tubo normal.

La solución, use ls --coloro ls --color=always.

Sin embargo, ahora esto lleva a otro problema potencial. Dependiendo de su less, puede no mostrar el color, sino mostrar los códigos de escape en su lugar. La solución es usar less -R. Esto le indica lessque pase los códigos de escape para los escapes de color ANSI. No desea usarlo, -rya que esto causará problemas con las líneas largas que se envuelven, ya que menos no calcula correctamente la longitud de la línea.

Entonces, la solución completa:

ls --color | less -R

Similarmente para tree:

tree -C | less -R
Patricio
fuente