ACTUALIZACIÓN : Resulta las últimas versiones de watch
solucionado el problema. Entonces, si los colores watch --color
son incorrectos, probablemente sea mejor simplemente actualizarlo (en mi sistema, está en el procps
paquete).
El soporte de color watch --color
es limitado en mi experiencia (aunque suficiente para ls -l --color
). Aquí está mi versión de la respuesta de @ davr con algunas características adicionales, el parpadeo más importante reducido. Puede ponerlo en su .bashrc y usarlo como cwatch ls -l --color
.
# `refresh cmd` executes clears the terminal and prints
# the output of `cmd` in it.
function refresh {
tput clear || exit 2; # Clear screen. Almost same as echo -en '\033[2J';
bash -ic "$@";
}
# Like watch, but with color
function cwatch {
while true; do
CMD="$@";
# Cache output to prevent flicker. Assigning to variable
# also removes trailing newline.
output=`refresh "$CMD"`;
# Exit if ^C was pressed while command was executing or there was an error.
exitcode=$?; [ $exitcode -ne 0 ] && exit $exitcode
printf '%s' "$output"; # Almost the same as echo $output
sleep 1;
done;
}
También puedes probar cosas como
cwatch 'ls -l --color | head -n `tput lines`'
si su terminal tiene menos líneas que la salida. Sin embargo, eso solo funciona si todas las líneas son más cortas que el ancho del terminal. La mejor solución que conozco para eso es:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'