Деякі команди, які використовую кольори відображення, але коли я використовую їх під час перегляду, кольори зникають:
watch -n 1 node file.js
Чи можна якось повернути кольори?
Деякі команди, які використовую кольори відображення, але коли я використовую їх під час перегляду, кольори зникають:
watch -n 1 node file.js
Чи можна якось повернути кольори?
Відповіді:
Деякі новіші версії watch
тепер підтримують колір.
Наприклад watch --color ls -ahl --color
.
watch
з git diff
. FWIW, щоб отримати, щоб працювати , ви повинні перейти в --color=always
до git diff
(наприклад watch --color git diff --color=always
.
Не використовуйте watch
... Коли ви використовуєте годинникові програми, можна виявити, що вони не записують у термінал, а потім знімуть колір. Щоб зберегти там контрольні коди, потрібно використовувати спеціальні прапори програми.
Якщо ви не знаєте прапорів або немає, ви можете змусити бідолаху дивитися:
while sleep <time>; do clear; <command>; done
Він матиме трохи мерехтіння (годинник працює "подвійний буфер"), але для деяких речей він досить корисний.
Можливо, вам сподобається зробити наручний годинник бідного чоловіка, використовуючи
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Але потім ви знову натиснете функцію "Я не пишу до терміналу".
while sleep <time>; do clear; <command> | tee /tmp/file; done
замість >
і cat
?
watch
do, і не перешкоджає мерехтінню команди
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Для очищення екрана та відображення виводу використовується лише вбудована оболонка, тому є найменш мерехтливою альтернативою.
Ви можете дублювати основні операції без зайвих помилок watch
у двох рядках сценарію оболонки.
$ cat cheapwatch
#!/bin/sh
# Not quite your Rolex
while true ; do
clear
printf "[%s] Output of %s:\n" "$(date)" "$*"
# "$@" <- we don't want to do it this way, just this:
${SHELL-/bin/sh} -c "$*"
sleep 1 # genuine Quartz movement
done
$ ./cheapwatch ls --color # no problem
Зрештою, хтось дуже розумний зламає tr
команду в цей сценарій, яка знімає символи управління, а потім змусить користувача використовувати, --color
щоб відключити цю логіку. Поки що суттєва наївність цього втілення відхилює монстра, що їсть кольори.
Якщо у вас є ситуація, коли watch
немає --color
можливості, і ви не можете оновити пакет з будь-якої причини, можливо, ви можете це зробити.
ТАК
годинник працює з кольоровим виходом. це частина пакету propps (принаймні, в debian). Тут ви знайдете помилку на ваше запитання http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334, де вони відповідають, вам слід оновити програму. пакет
наприклад, з ubuntu 11.04 цей пакет працює http://packages.debian.org/wheezy/procps
тл; д-р
оновлення проц
Хоча інші відповіді вирішують цю проблему, найпростіший спосіб досягти цього - це за допомогою unbuffer
інструменту. Щоб використовувати його, просто виконайте:
$ watch --color 'unbuffer <your-program>'
Таким чином, вам не доведеться полювати за контрольною послідовністю, що дозволяє включити прапорці вашої програми. Але заперечення полягає в тому, що ваша версія годинника повинна підтримувати --color
прапор.
Ви можете встановити unbuffer на Debian або Ubuntu за допомогою sudo apt-get install expect
.
'unbuffer <command>'
- не даючи конкретної команди використовувати, як це відповідає на питання?
<command>
конкретної програми, яку ви хочете запустити кольорами?
З посібника для перегляду:
Символи, що не друкуються, вилучаються з програмного виводу. Використовуйте "cat -v" як частину командного конвеєра, якщо ви хочете їх бачити.
Хоча я не впевнений, як ним користуватися.
watch -c "ls --color|cat -v"
показує ^[[0m^[[01;34mAgent^[[0m
перший рядок.
watch --color ls --color=always .