Cuando ejecuto un programa (por ejemplo grepo ls) sin un buscapersonas, su salida es de color. Sin embargo, cuando lo ejecuto canalizando su salida a less, no se muestran colores.
Por ejemplo, este comando genera una salida en color:
grep -r something
pero esto no:
grep -r something | less
¿Por qué? ¿Cómo puedo ver los colores less?
command-line
less
Mohammad Reza Rezwani
fuente
fuente

grep --color=always "search string" * | less -Rpero tiendo a usarmosthoy en día en lugar deless. TAMBIÉN: gnu.org/software/src-highlite es un marcador de color (menos funciona también)python-pygments?Respuestas:
Hay dos problemas aquí:
ls—que detectan automáticamente el soporte de color— no encuentran soporte de tuberíaslessestá configurado para mostrar solo los códigos de color de forma predeterminada.Ambos se pueden superar, pero es un poco torpe:
Esto no es
lsespecífico. Muchos comandos que admiten color también tienen un argumento de anulación.Una respuesta un poco más profunda
lses comprobar si su STDOUT pertenece o no a un terminal real o no. Cuando se canalizan las cosas, el STDOUT se establece en el STDIN del siguiente comando.Puede ver esto en el trabajo en el
lscódigo fuente . Está utilizando elisattycomando (una interfaz POSIX central) para determinar cuál es la situación:Los colores están activados por defecto:
¿Intentamos generar en varias columnas:
grephace algo muy similar, a menos que se anule explícitamente, detectará el soporte de color, conisatty:fuente
--colorargumento:ack-grep -i select --color | less -R-Cargumento.Si está interesado en los colores en
lessgeneral, es posible que desee mirarlesspipe.sh. Ver, por ejemplo, http://freecode.com/projects/lesspipe .También coloreará los scripts de shell, scripts de Perl, etc. de manera similar a un editor de texto, pero sin el uso de ningún programa de "preprocesamiento" para colorear.
fuente