UPDATE : Ternyata versi terbaru watch
memperbaiki masalah. Jadi, jika warnanya watch --color
salah, mungkin lebih baik memperbaruinya saja (di sistem saya, ada di procps
paket).
Dukungan warna dalam watch --color
pengalaman saya terbatas (meskipun cukup untuk ls -l --color
). Inilah versi saya dari jawaban @ davr dengan beberapa fitur tambahan, yang terpenting adalah pengurangan kedipan. Anda dapat meletakkannya di .bashrc Anda dan menggunakannya sebagai 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;
}
Anda juga dapat mencoba hal-hal seperti
cwatch 'ls -l --color | head -n `tput lines`'
jika terminal Anda memiliki garis lebih sedikit daripada output. Itu hanya bekerja jika semua garis lebih pendek dari lebar terminal. Solusi terbaik yang saya tahu adalah:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'