Некоторые команды, которые я использую цвета дисплея, но когда я использую их с часами, цвета исчезают:
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
в пару строк оболочки script.
$ 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
в этот script, который разделяет управляющие символы, а затем заставляет пользователя использовать --color
для отключения этой логики. В настоящее время явная наивность этой реализации держит цветного монстра.
Если вы находитесь в ситуации, когда watch
не имеет опции --color
, и вы не можете обновить пакет по какой-либо причине, возможно, вы можете это сделать.
Не используйте 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
, и не предотвращает мерцание команды
ДА
часы работают с цветопередачей. это часть пакета procps (по крайней мере, в debian) здесь есть bugreport для вашего вопроса http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 где они отвечают, что вы должны обновить пакет procps
например. с ubuntu 11.04 этот пакет работает http://packages.debian.org/wheezy/procps
ТЛ; дг
update procps
Из руководства по эксплуатации:
Непечатаемые символы удаляются из вывода программы. Используйте "cat -v" как часть конвейера команд, если вы хотите их увидеть.
Хотя, я не уверен, как его использовать.
watch -c "ls --color|cat -v"
показывает ^[[0m^[[01;34mAgent^[[0m
для первой строки.