web-dev-qa-db-ja.com

UNIXコマンド「ウォッチ」の色は?

表示色を使用するいくつかのコマンドが、時計でそれらを使用すると、色が消えます:

watch -n 1 node file.js

何とか色を戻すことは可能ですか?

92

いくつかの新しいバージョンのwatchが色をサポートするようになりました。

例えば ​​watch --color ls -ahl --color

関連

116

watchを使用しないでください... watchプログラムを使用すると、端末に書き込んでいないことを検出して、色を削除できます。特定のプログラムフラグを使用して、制御コードをそこに保持する必要があります。

フラグがわからない場合、または存在しない場合は、次の方法で貧しい人を監視できます。

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

ちらつきが少しありますが(時計は「ダブルバッファリング」機能します)、一部の機能では十分に役立ちます。

を使用してダブルバッファリングの貧乏人の時計を作成したくなるかもしれません

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

しかし、その後、「端末に書き込みを行っていません」機能を再度使用します。

20
theist

数行のシェルスクリプトで、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オプションがなく、何らかの理由でパッケージをアップグレードできない状況にある場合は、これをスローできます。

15
Kaz

はい

時計はカラー出力で動作します。 (少なくともdebianでは)procpsパッケージの一部です。ここにあなたの質問のバグレポートがあります http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 、procpsパッケージを更新する必要があること

例えばubuntu 11.04では、このパッケージは動作します http://packages.debian.org/wheezy/procps

tl; dr

procpsを更新

8
davidDavidson

時計のマニュアルから:

印刷されない文字は、プログラム出力から削除されます。表示する場合は、コマンドパイプラインの一部として「cat -v」を使用します。

しかし、私はそれを使用する方法がわかりません。

1
Benoit