UPDATE : Il s'avère que les dernières versions de watch
a réglé le problème. Donc, si les couleurs de watch --color
sont erronées, il est probablement préférable de simplement les mettre à jour (sur mon système, elles se trouvent dans le répertoire procps
paquet).
Le support des couleurs dans watch --color
est limitée dans mon expérience (bien que suffisante pour ls -l --color
). Voici ma version de la réponse de @davr avec quelques fonctionnalités supplémentaires, la plus importante étant la réduction du scintillement. Vous pouvez la mettre dans votre .bashrc et l'utiliser en tant que 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;
}
Vous pouvez aussi essayer des choses comme
cwatch 'ls -l --color | head -n `tput lines`'
si votre terminal a moins de lignes que la sortie. Cela ne fonctionne que si toutes les lignes sont plus courtes que la largeur du terminal, cependant. La meilleure solution que je connaisse pour cela est la suivante :
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'