Vine aquí para usar watchcon git diff. Fwiw, para conseguir que trabajar usted tiene que pasar en --color=alwaysa git diff(por ejemplo watch --color git diff --color=always.
theabraham
31
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".
¿Quizás usar en while sleep <time>; do clear; <command> | tee /tmp/file; donelugar de >y cat?
André Leria
mmm no lo entiendo @ AndréLeria ... | tee eliminará los códigos de color como watchdo y no evitará que el comando parpadee
theist
Es una sugerencia para el segundo ejemplo, que tampoco me da colores. ¿O quizás estoy haciendo algo mal?
André Leria
1
@ AndréLeria El segundo "ejemplo" es un ejemplo equivocado (como se dice en la última línea). El punto es que una vez que golpea una tubería, pierde los códigos de color, ya que no está escribiendo en una terminal. Está ahí para demostrar lo equivocado es para tratar de compensar el parpadeo debido al tiempo transcurrido entre la clara y la ejecución de comandos de destino mediante una tubería a trabajar como tamponadawatch
teísta
4
En bash: 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.
Géza Török
18
Puede duplicar la operación básica y sencilla de watchen un par de líneas de script de shell.
$ cat cheapwatch
#!/bin/sh# Not quite your Rolexwhile 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 movementdone
$ ./cheapwatch ls --color # no problem
Con el tiempo, alguien muy inteligente hackeará un trcomando en este script que elimina los caracteres de control y luego obligará al usuario a usarlo --colorpara 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 watchque no tiene la --coloropción y no puede actualizar el paquete por cualquier motivo, tal vez pueda incluir esto.
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
Si bien otras respuestas resuelven este problema, la forma más fácil de lograrlo es utilizando la unbufferherramienta. 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 --colorbandera.
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?
Danoram
@Danoram ¿Qué no te queda claro? ¿Necesita ayuda para reemplazar <command>el programa específico que desea ejecutar con colores?
Avamander
@Avamander Hubiera escrito ese comentario porque la pregunta estaba marcada. Si revisa el historial de edición, verá que el autor actualizó la respuesta. No hay nada claro. Mi comentario ya no es relevante ..
Danoram
1
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.
Esto hace que los caracteres de control sean visibles en la salida para mí, en lugar de causar coloración. Por ejemplo, watch -c "ls --color|cat -v"muestra ^[[0m^[[01;34mAgent^[[0mla primera línea.
Respuestas:
Algunas versiones más recientes de
watch
ahora admiten color.Por ejemplo
watch --color ls -ahl --color
.Relacionados .
fuente
watch
congit diff
. Fwiw, para conseguir que trabajar usted tiene que pasar en--color=always
agit diff
(por ejemplowatch --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:
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
Pero luego volverá a presionar la función "No estoy escribiendo en una terminal".
fuente
while sleep <time>; do clear; <command> | tee /tmp/file; done
lugar de>
ycat
?watch
do y no evitará que el comando parpadeewatch
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.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.fuente
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
fuente
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: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
.fuente
'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.
fuente
watch -c "ls --color|cat -v"
muestra^[[0m^[[01;34mAgent^[[0m
la primera línea.watch --color ls --color=always .