Algunos comandos que uso muestran colores, pero cuando los uso con el reloj, los colores desaparecen:
watch -n 1 node file.js
¿Es posible recuperar los colores de alguna manera?
Algunos comandos que uso muestran colores, pero cuando los uso con el reloj, los colores desaparecen:
watch -n 1 node file.js
¿Es posible recuperar los colores de alguna manera?
Respuestas:
Algunas versiones más recientes de watch
ahora admiten color.
Por ejemplo watch --color ls -ahl --color
.
watch
con git diff
. Fwiw, para conseguir que trabajar usted tiene que pasar en --color=always
a git diff
(por ejemplo watch --color git diff --color=always
.
No lo use watch
... Cuando usa el reloj, los programas pueden detectar que no están escribiendo en un terminal y luego quitar el color. Debe utilizar indicadores de programa específicos para mantener los códigos de control allí.
Si no conoce las banderas o no las hay, puede hacer que un pobre mire de la siguiente manera:
while sleep <time>; do clear; <command>; done
Tendrá un poco de parpadeo (el reloj funciona con "doble búfer") pero para algunas cosas es bastante útil.
Puede tener la tentación de hacer un reloj de hombre pobre con doble amortiguación usando
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Pero luego volverá a presionar la función "No estoy escribiendo en una terminal".
while sleep <time>; do clear; <command> | tee /tmp/file; done
lugar de >
y cat
?
watch
do y no evitará que el comando parpadee
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Utiliza solo elementos internos de shell para limpiar la pantalla y mostrar la salida, por lo que es la alternativa que menos parpadea.
Puede duplicar la operación básica y sencilla de watch
en un par de líneas de script de shell.
$ cat cheapwatch
#!/bin/sh
# Not quite your Rolex
while true ; do
clear
printf "[%s] Output of %s:\n" "$(date)" "$*"
# "$@" <- we don't want to do it this way, just this:
${SHELL-/bin/sh} -c "$*"
sleep 1 # genuine Quartz movement
done
$ ./cheapwatch ls --color # no problem
Con el tiempo, alguien muy inteligente hackeará un tr
comando en este script que elimina los caracteres de control y luego obligará al usuario a usarlo --color
para desactivar esa lógica. Por el momento, la pura ingenuidad de esta implementación mantiene alejado al monstruo devorador de colores.
Si se encuentra en una situación en la watch
que no tiene la --color
opción y no puede actualizar el paquete por cualquier motivo, tal vez pueda incluir esto.
SI
el reloj funciona con salida de color. es parte del paquete procps (al menos en debian) aquí está el informe de errores para su pregunta http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 donde responden, que debe actualizar el procps paquete
por ejemplo, con ubuntu 11.04 este paquete funciona http://packages.debian.org/wheezy/procps
tl; dr
actualizar procps
Si bien otras respuestas resuelven este problema, la forma más fácil de lograrlo es utilizando la unbuffer
herramienta. Para usarlo simplemente haz lo siguiente:
$ watch --color 'unbuffer <your-program>'
De esta manera, no tiene que buscar la secuencia de control que habilita los indicadores de su programa. Sin embargo, la advertencia es que su versión de reloj debe ser compatible con la --color
bandera.
Puede instalar unbuffer en Debian o Ubuntu usando sudo apt-get install expect
.
'unbuffer <command>'
- sin dar un comando específico para usar, ¿cómo responde esto a la pregunta?
<command>
el programa específico que desea ejecutar con colores?
Del manual del reloj:
Los caracteres que no se imprimen se eliminan de la salida del programa. Utilice "cat -v" como parte de la canalización de comandos si desea verlos.
Sin embargo, no estoy seguro de cómo usarlo.
watch -c "ls --color|cat -v"
muestra ^[[0m^[[01;34mAgent^[[0m
la primera línea.
watch --color ls --color=always .