[linux] 유닉스 명령 “시계”가있는 색상?

표시 색상을 사용하는 일부 명령은 시계와 함께 사용하면 색상이 사라집니다.

watch -n 1 node file.js

어떻게 든 색상을 되돌릴 수 있습니까?



답변

watch이제 일부 최신 버전은 색상을 지원합니다.

예를 들면 watch --color ls -ahl --color.

관련 .


답변

사용하지 마십시오 watch… 시계 프로그램을 사용하면 터미널에 쓰고 있지 않음을 감지하고 색상을 제거 할 수 있습니다. 제어 코드를 유지하려면 특정 프로그램 플래그를 사용해야합니다.

깃발을 모르거나없는 경우 다음과 같이 가난한 사람을 감시 할 수 있습니다.

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

약간의 깜빡임 (시계가 “이중 버퍼링”으로 작동 함)이 있지만 어떤 경우에는 충분히 유용합니다.

이중 버퍼링 된 가난한 사람의 시계를 만드는 유혹을받을 수 있습니다.

while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; 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어떤 이유로 든 패키지를 업그레이드 할 수없는 상황에 처해 있다면 이것을 던져도됩니다.


답변

시계는 컬러 출력으로 작동합니다. 그것은 procps의 패키지 여기 (데비안에서 적어도) 귀하의 질문에 대한 버그 보고서됩니다의 일부입니다 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334
그들이 대답 어디에 당신이 procps의를 업데이트해야, 꾸러미

예를 들어 우분투 11.04에서이 패키지는 http://packages.debian.org/wheezy/procps에서 작동합니다 .

tl; dr

procps 업데이트


답변

다른 답변이이 문제를 해결하지만이를 수행하는 가장 쉬운 방법은 unbuffer도구를 사용하는 것 입니다. 사용하려면 다음을 수행하십시오.

$ watch --color 'unbuffer <your-program>'

이렇게하면 프로그램의 플래그를 활성화하는 제어 시퀀스를 찾을 필요가 없습니다. 그러나주의 할 점은 시계 버전이 --color플래그를 지원해야한다는 것 입니다.

.NET을 사용하여 Debian 또는 Ubuntu에 unbuffer를 설치할 수 있습니다 sudo apt-get install expect.


답변

시계 설명서에서 :

인쇄되지 않는 문자는 프로그램 출력에서 ​​제거됩니다. 이를 보려면 명령 파이프 라인의 일부로 “cat -v”를 사용하십시오.

하지만 어떻게 사용하는지 잘 모르겠습니다.


답변