時計の変色を防ぐ

時計の変色を防ぐ

特定の項目を選択して色を指定するために、ログファイルを監視するスクリプトを職場で変更しています。最終出力は、複数の列にある6桁の数字のリストです。数字の先頭にaを追加することができ、~最終出力では何も壊れませんでしたが、かなり見苦しく、読みにくいです。ただし、以前のbashスクリプトまたはPerlスクリプトのデータ最終処理で数字に色を付けようとすると、カラーテキストが破損します。

たとえば、生の数字を入力します$num

123456

私はこれをPerlとして入力します(またはBashでもほぼ同じものを入力します):

"\e[1;34m" . $num . "\e[0m"

これが私が得るものです:

[1;34m123456[0m 

私もエスケープバージョンを試しましたが、同じ結果を得ました。

"\x1B[1;34m" . $num . "\x1B[0m"

違いがある場合、実際のスクリプトスタックは次のようになります(混乱)。

  • Perlは内部シェルスクリプトを呼び出してからgrep/cutなどにパイプされます。
  • シェルスクリプトにはより多くのcut/ etcが含まれており、.plにパイプされています。
  • シェルスクリプトはこの出力を監視します。

watchたぶん色が好きではありませんか?

私はそれについてあまり知らないので、perl印刷ラインの周りに見えるものを示すのは悪いと思いました。

my $format = ("%-8s") x scalar(@{$a[0]});

printf("$format\n", @$_)

ベストアンサー1

「色の盗難」の問題があります。より、これはウォッチが単純な/bin/sh出力スタイルを使用しているので、すべての色、エイリアス、ショートカットなど全体を破ることができるからです!

だからそれを集めて私の中に入れておいた。.bashrc、マイエイリアス、ショートカットなどをすべて使用できます。

Usage:
    watcher 20 'somecommand | apipe | grep'

この数は更新間の遅延時間(秒単位)であり、コマンドには引用可能なすべての内容を含めることができます。

###### 'watch' workalike, lets me use my aliases and such
function watcher() { WATCHERTIME=$1 ; WATCHERFILE=/tmp/watcher$$ ; shift ; while true ; do WATCHERHEIGHT=$(($LINES - 5)) ; ( eval $* ) | tail -n ${WATCHERHEIGHT} > ${WATCHERFILE} 2>/dev/null; clear ; /bin/echo -n "Every ${WATCHERTIME} seconds - " ; date ; /bin/echo ; cat ${WATCHERFILE} ; \rm -f ${WATCHERFILE} ; /bin/echo ; /bin/echo "==" ; sleep ${WATCHERTIME} ; done ; }

それを破壊する:

function watcher()
{ 
  WATCHERTIME=$1
  WATCHERFILE=/tmp/watcher$$
  shift
  while true; do
    WATCHERHEIGHT=$(($LINES - 5))
    ( eval $* ) | tail -n ${WATCHERHEIGHT} > ${WATCHERFILE} 2>/dev/null
    clear
    /bin/echo -n "Every ${WATCHERTIME} seconds - "
    date
    /bin/echo
    cat ${WATCHERFILE}
    \rm -f ${WATCHERFILE}
    /bin/echo
    /bin/echo "=="
    sleep ${WATCHERTIME}
  done
}

現在の画面の高さを行単位で決定し、それ自体の出力に十分な行を引いて、指定されたコマンドを繰り返し実行し、画面を消去して出力を表示し、次のループを待ちます。出力の終わりを示すために、下部に短い「==」を表示します。時にはこれを知ることが役に立ちます。

表示するときの待ち時間を最小限に抑えるためにこれを行います。出力をキャプチャせずに表示すると、長い一時停止が発生し、出力が...迷惑になります。

色を台無しにしないので、おなじみのすべてを手に入れることができます。楽しむ!

おすすめ記事