Цвета с unix командой "смотреть"? - PullRequest
89 голосов
/ 25 сентября 2010

Некоторые команды, которые я использую, отображают цвета, но когда я использую их с часами, цвета исчезают:

watch -n 1 node file.js

Возможно ли как-нибудь вернуть цвета?

Ответы [ 5 ]

111 голосов
/ 25 сентября 2010

Некоторые новые версии watch теперь поддерживают цвет.

Например, watch --color ls -ahl --color.

Связано .

20 голосов
/ 28 ноября 2016

Не используйте watch ... При использовании часовых программ можно обнаружить, что они не пишут в терминал, а затем удалить цвет. Вы должны использовать специальные программные флаги, чтобы сохранить там управляющие коды.

Если вы не знаете флаги или их нет, вы можете сделать часы бедного человека по:

while sleep <time>; do clear; <command>; done

Это будет немного мерцать (часы работают "с двойной буферизацией"), но для некоторых вещей это достаточно полезно.

Вы можете испытать желание сделать часы бедного человека с двойным буфером, используя

while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done

Но затем вы снова включите функцию "Я не пишу в терминал".

15 голосов
/ 27 мая 2016

Вы можете дублировать основную, без излишеств операцию 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, и вы не можете обновить пакет по какой-либо причине, возможно, вы можете добавить это.

8 голосов
/ 10 декабря 2011

ДА

часы работают с выводом цвета.это часть пакета procps (по крайней мере, в Debian). Вот багрепорт для вашего вопроса http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334, где они отвечают, что вам следует обновить пакет procps

например, с помощью ubuntu 11.04 этот пакет работает http://packages.debian.org/wheezy/procps

tl; dr

update procps

1 голос
/ 25 сентября 2010

Из руководства по часам:

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

Хотя я не уверен, как его использовать.

...