команда bash watch с сохраненными цветами

С man watch:

непечатаемые символы удаляются
из вывода программы. Используйте "cat-v" как
часть конвейера команд, если
хочу на них посмотреть.

Так как я использую cat -v Если я хочу увидеть цветную вывод:

watch ls -al --color
5
задан Paweł Gościcki
источник

5 ответов

правильная команда

watch --color "ls -a1 --color"

Это не документировано в MAN-странице или экране. Я должен использовать строки, чтобы найти его.

48
отвечен paperhorse 2010-11-16 20:51:56
источник

Я думаю, что это может быть невозможно с помощью команды "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"

он показывает вам символы управления цветом...я думаю, это не то, чего ты хочешь.

25
отвечен davr 2010-03-29 19:25:25
источник

Если вы используете Mac, как я,watch из доморощенного не поддерживает цвет.

что вы хотите fswatch но это еще не доморощенный. Чтобы установить его, вы хотите сделать немного более запутанным

https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3‌​/Library/Formula/fswatch.rb

See это так ответ для использования.

4
отвечен fatuhoku 2017-05-23 12:41:44
источник

watch не работает с выводом цвета, и я не знаю, как это сделать. Однако вы можете создать свой собственный скрипт для его эмуляции.

3
отвечен Dennis Williamson 2010-03-29 19:26:19
источник

обновление: выходит последняя версия 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'
1
отвечен user21952-is-a-great-name 2017-12-01 03:13:10
источник

Другие вопросы bash linux watch