ls -l --color=auto | tee output.log
Sin tubo / te es de color. ¿Cómo puedo hacerlo para que permanezca coloreado mientras lo uso tee(solo se puede colorear en la pantalla, no me importan los colores en los registros).
ls -l --color=auto | tee output.log
Sin tubo / te es de color. ¿Cómo puedo hacerlo para que permanezca coloreado mientras lo uso tee(solo se puede colorear en la pantalla, no me importan los colores en los registros).
Respuestas:
Simplemente inserte unbufferantes de cualquier comando para hacer que piense que está escribiendo en una salida interactiva, incluso si realmente está entrando en otro ejecutable. Esto preservará el color en el caso de ls.
Por ejemplo
unbuffer ls -l --color=auto | tee output.log
Si aún no lo tiene instalado, en Ubuntu y otras distribuciones de Debian-ish Linux puede instalarlo unbufferhaciendo.
sudo apt-get install expect-dev
xcodebuild- en cambio obtuve líneas cortadas sin color. unbuffer xcodebuild | less -RSin embargo, funcionó a la perfección.
expect-devpaquete. expectes suficiente.
Use la opción ls --color=always
--color=auto no dará color a la salida de una tubería, por razones obvias.
La página principal dice lo siguiente:
Con --color = auto, los códigos de color se emiten solo si la salida estándar está conectada a un terminal (tty).
ls -lfue solo un ejemplo. Tengo un comando completamente diferente (registros de heroku) que elimina los colores cuando se canaliza tee. Y quiero "arreglar / cambiar" tee / pipe, no el comando que estoy ejecutando.
ls. Vea mi respuesta que soluciona el problema para todos los programas, incluidos los registros de heroku.
Expandiré la scriptsolución dada en el comentario de la respuesta aceptada. El uso scriptpuede ser útil en caso de que no pueda o no quiera instalar el paquete de esperar que contiene el unbuffercomando.
Imprima la ls salida en stdout y archive con códigos de color :
script -efq output.log -c "ls -l --color=auto"
donde ( man script):
-e, --return Return the exit code of the child process. Uses the same format as bash termination on signal termination exit code is 128+n. -f, --flush Flush output after each write. This is nice for telecooperation: one person does `mkfifo foo; script -f foo', and another can supervise real-time what is being done using `cat foo'. -q, --quiet Be quiet (do not write start and done messages to either standard output or the typescript file).
Ver el archivo de salida con colores:
less -r output.log
-ees lo mismo que --returnno hay necesidad de ambos; -efqes --return --flush --quiet.