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

С man watch:

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

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

watch ls -al --color
13
задан Paweł Gościcki
07.03.2023 20:18 Количество просмотров материала 3170
Распечатать страницу

5 ответов

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

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

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

48
отвечен paperhorse 2023-03-09 04:06

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

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

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

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

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

4
отвечен fatuhoku 2023-03-09 08:40

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

3
отвечен Dennis Williamson 2023-03-09 10:57

обновление: выходит последняя версия 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 2023-03-09 13:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх