¿Hay alguna forma de mantener el texto pasado a la cabeza, cola, menos, etc. para colorear?

26

¿Hay alguna manera de mantener la coloración de texto pasa a través de la tubería |a head, tail, less, etc.?

Timofey Gorshkov
fuente
¿Algún programa de salida específico? Depende del programa que envíe los datos a través de la tubería. head, tailetc. no son los que eliminan los colores, es el programa que genera los datos que generalmente verifican si la salida se dirige a la consola (de color), a un archivo o tubería (no de color).
KurzedMetal

Respuestas:

15

Supongo que está canalizando lsy desea preservar los códigos de color del terminal. Puede decir ls --color=always(en lugar del valor predeterminado de --color=auto), lo que preservará los códigos, pero eso no garantizará que la cosa a la que se dirige sepa cómo entenderlos.

Si lo usa glarken su lugar grep, intentará mostrarlo con colores.

Si se utiliza lesscon el -Rque se intenta mostrar con colores.

phogg
fuente
66
Estoy tubería de git. He descubierto que tiene una configuración similar (p. Ej. git config color.diff always) Que mantiene la coloración.
Timofey Gorshkov
1
@Errandir el problema con esa configuración es que romperá cualquier script o comando que use la git diffsalida como entrada porque siempre generará los códigos de escape ANSI.
KurzedMetal
@ Errandir, gracias! No tengo ningún script que dependa de una salida limpia de git diff, ¡así que esto funciona para mí! Gracias !
Ashutosh Jindal
He utilizado esto para grep: grep "string" file.txt | headpara asegurarse de que era de color el resultado de grep acabo de cambiar a estegrep "string" file.txt --color=always | head
Emil Stenström
13

Depende del programa que genere la salida en la tubería.

head, tailetc no son los que eliminan los colores, es el programa que genera los datos que generalmente verifican si la salida se dirige a la consola (en color), a un archivo o tubería (no en color)

Encontré otro SU Q&A que muestra cómo mentir a los programas de canalización para que salgan como si estuvieran enviando la salida a una consola (emulando una consola con unbuffer)

KurzedMetal
fuente
¿Hay alguna manera de mantener la colorización en color=automodo (para hacer que el programa piense que la salida va a la consola en lugar de a la tubería)?
Timofey Gorshkov
@KurzedMetal ¿Cómo un programa, por ejemplo head, tailetc., detecta que se está canalizando a otro programa (para que pueda generar datos sin colores, etc.).
Jorge Bucaran
@JorgeBucaran stackoverflow.com/a/7601564/236871
KurzedMetal