2010-09-25 20 views
51

Algunos comandos que utilizo colores de la pantalla, pero cuando los uso con el reloj de los colores desaparecen:¿Colores con el comando "mirar" de Unix?

watch -n 1 node file.js 

¿Es posible que los colores de nuevo en alguna manera?

+0

posible duplicado de [¿Cómo puedo hacer que el comando de control interprete las secuencias vt100?] (Http://stackoverflow.com/questions/2417824/how-can-i-make-the-watch-command-interpret-vt100- secuencias) – l0b0

Respuesta

64

Algunas versiones más recientes de watch ahora admiten color.

Por ejemplo watch --color ls -ahl --color.

Related.

+1

echa un vistazo a: http://superuser.com/questions/125469/bash-watch-command-with-colors- preservado (primera respuesta) - Tal vez pueda vincularlo en su respuesta. – aatdark

+6

Vine aquí para usar 'watch' con' git diff'. FWIW, para que funcione, tienes que pasar '--color = always' a' git diff' (por ejemplo 'watch --color git diff --color = always'. – theabraham

+0

En otras palabras:" Watch * does * trabajo con salida de color " – nobar

1

De manual de reloj:

caracteres no imprimibles se eliminan de la salida del programa. Use "cat -v" como parte de la canalización de comandos si desea verlos.

Sin embargo, no estoy seguro de cómo usarlo.

+4

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^[[0m' para la primera línea. –

11

Puede duplicar el, sin adornos operación fundamental 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)" "$*" 
    # "[email protected]" <- 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 

Eventualmente, alguien muy inteligente va a cortar un comando tr en este script que elimina los caracteres de control, y luego obligar al usuario a utilizar --color desactivar esa lógica. Por el momento, la pura ingenuidad de esta implementación está alejando al monstruo que devora el color.

Si estás en una situación en la watch no tiene la opción --color y no se puede actualizar el paquete por cualquier razón, tal vez usted puede lanzar en este.

9

No utilice watch ... Cuando utiliza programas de vigilancia, puede detectar que no están escribiendo en un terminal y luego quitar el color. Debe usar indicadores de programa específicos para mantener allí los códigos de control.

Si usted no sabe las banderas o si no hay se puede hacer el reloj del hombre de un pobre por:

while sleep <time>; do clear; <command>; done 

Tendrá un poco de parpadeo (reloj funciona "de doble buffer"), pero para algunas cosas es bastante útil.

Usted puede tener la tentación de hacer el reloj de un hombre pobre doble buffer usando

while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done 

Pero entonces usted va a golpear de nuevo el "No estoy escribiendo a un terminal" característica.

+0

Quizás use' while sleep

+0

mmm No lo entiendo @ AndréLeria ... | tee eliminará los códigos de color como 'watch' do y no evitará que el comando parpadee – theist

+0

Es una sugerencia para el segundo ejemplo, que tampoco me da colores. tal vez estoy haciendo algo mal? –

Cuestiones relacionadas