С man watch
:
непечатаемые символы удаляются
из вывода программы. Используйте "cat-v" как
часть конвейера команд, если
хочу на них посмотреть.
Так как я использую cat -v
Если я хочу увидеть цветную вывод:
watch ls -al --color
С man watch
:
непечатаемые символы удаляются
из вывода программы. Используйте "cat-v" как
часть конвейера команд, если
хочу на них посмотреть.
Так как я использую cat -v
Если я хочу увидеть цветную вывод:
watch ls -al --color
правильная команда
watch --color "ls -a1 --color"
Это не документировано в MAN-странице или экране. Я должен использовать строки, чтобы найти его.
Я думаю, что это может быть невозможно с помощью команды "watch". Вот более длинный способ сделать это:
while true; do clear; date;echo;ls -al --color; sleep 2; done
вы можете поместить это в скрипт, например:
echo "while true; do clear; date;echo;$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
чтобы уточнить, вот почему я думаю, что это невозможно с помощью команды "watch". Посмотрите, что произойдет, если вы используете cat-v:
watch "ls -al --color|cat -v"
он показывает вам символы управления цветом...я думаю, это не то, чего ты хочешь.
Если вы используете Mac, как я,watch
из доморощенного не поддерживает цвет.
что вы хотите fswatch но это еще не доморощенный. Чтобы установить его, вы хотите сделать немного более запутанным
https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3/Library/Formula/fswatch.rb
See это так ответ для использования.
watch
не работает с выводом цвета, и я не знаю, как это сделать. Однако вы можете создать свой собственный скрипт для его эмуляции.
обновление: выходит последняя версия 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 '3[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'
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]