ОНОВЛЕННЯ : Вимикає останні версії watch
виправленої проблеми. Отже, якщо кольори watch --color
неправильні, можливо, краще просто оновити його (у моїй системі це в procps
пакеті).
Підтримка кольорів watch --color
у моєму досвіді обмежена (хоча й достатня для ls -l --color
). Ось моя версія відповіді @ davr з деякими додатковими функціями, найголовніше - зменшеним мерехтінням. Ви можете помістити його у свій .bashrc і використовувати як 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;
}
Ви також можете спробувати такі речі
cwatch 'ls -l --color | head -n `tput lines`'
якщо ваш термінал має менше ліній, ніж вихід. Це працює лише в тому випадку, якщо всі лінії коротші, ніж кінцева ширина. Найкращий спосіб, який я знаю для цього, це:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'