Kubuntu: "watch"コマンド出力で色を無効にする方法

Kubuntu: "watch"コマンド出力で色を無効にする方法

私はKubuntu 20.04を実行しています。

watch コマンドは procps パッケージで提供されます。

dpkg -l procps

ディスプレイバージョン:

2:3.3.16-1ubuntu2

warchの出力を次のファイルにリダイレクトします。

watch -t "date" >/tmp/Wex1

監視オプション-dと-gが指定されていなくても、オプション-cが指定されているかどうかにかかわらず、監視するファイルESCシーケンス(ANSIカラーシーケンスである可能性があります)を記録します。

端末に出力しないときに時計が出力の色の順序を抑えるという内容をインターネットのどこかで読みました。しかし、私の場合はそうではありません。

時計からESCシーケンスが出力されないようにする方法を知っている人はいますか?

  • 2022年4月28日付録:

ありがとうございます。しかし、すべてがより複雑です。

(a) カーソルの移動に使用される ESC シーケンスと、色に使用される ESC シーケンスがわかります。カーソルの移動に使用されるものを維持したいと思います。

(b)ウォッチの-cオプションは、ウォッチによって実行されたコマンドがウォッチに色を渡すかどうかに関するものです。そうではありません。

(c) "date" ディレクティブは私の投稿の簡単な例に過ぎません。実際には3つのコマンドチェーンがあります:1. df(以前の状態と比較するためのdiff内)、2. free、3. pmap。次のように:

warch -d "df -T -a >/tmp/WEx_df_a__2; diff -U0 /tmp/WEx_df_a__1 /tmp/WEx_df_a__2; echo \"\"; free -h -w; echo \"\"; pmap -X 2205860"

パイプを使用しない、または使用しません。

(d) 通常、時計の良い出力を目で観察する。特別な場合は、準スクリーンショットを作成したいと思います。

追加: Konsole が提供する Kubuntu 端末は /dev/tty2 ではなく /dev/pts/21 なので、screendump および /dev/vcs は使用できません。

したがって、文書化と解析のためにWatchの出力をファイルに書き込む必要があります。

(e) 時計がファイルに書き込む内容を処理し、色の順序を削除しました。

私はインターネット上のいくつかの正規表現を使ってPerlプログラムを書いた。

https::/itectec.com/superuser/removing-ansi-color-codes-from-text-stream

(f)私のPerlスクリプトは増え続けますが、まだ完了していません。多くの困難のために進む方法が見つかりません。

(f1)Perlスクリプトの出力をターミナル(Kubuntu、Konsole、たとえば/dev/pts/21)に直接出力すると、何も表示されません。出力はlessにパイプするときにのみ表示され、印刷できない文字はlessの変換として表示されます。

(f2)使用する必要が少ないため、pmapで生成されたレイアウトが失われ、すべての単語はスペースを区切り文字として使用するチェーンです。

私も食べました。

xxd-g1

でも今は忘れてしまいました。

アントン挨拶

  • 2022年4月30日付録:

ありがとうございます。今、私たちの新しい理解を通して、すべてを見て、開発者がまだやるべきことがたくさんあることがわかりました。

(ㅏ)

私が書いた内容は完全に正確ではありません。カーソル移動に使用されるESCシーケンスと、色に使用されるESCシーケンスです。

カーソル移動に使用されないESCシーケンスは、強調表示に使用されます。これは、色を介してではなくビデオを反転することによって行われます。

逆方向ビデオ出力の場合、ansiカラーコードは適していませんが、他のカラーコードは適しています。

ウォッチのワンタイム出力を解析するには、それを単純なマークアップに置き換える必要があります。

考慮すべき他の欠陥がある場合。

(二)

実際の端末を使用するために

情報 CMP -L -1

端末がどの制御シーケンスを受け入れたかを確認できます。

xxd-g1

コマンドウォッチを使用して、どのシーケンスが出力されているかを確認できます。

時計から出力されるいくつかのシーケンスは、私の端末のinfocmpリストに含まれていません。

"watch"コマンドはxterm-256-color用に設計されているようではありません。

(氏)

ウォッチの出力が端末に直接入力されずにファイルに保存され、ファイルの内容が端末に入力されたときに2つのエラーが発生しました。

(C1)

端末設定が破損しています。

SHIFT-UPARROWと入力すると、ディスプレイが1行(通常)に移動せずに大文字の「A」が表示されます。

回復するには、「reset」と入力する必要がありました。

時計のどの出力順序が原因であるかが見つかりました。

/e[?1049h\e[22;0;0t

これがクロック出力の始まりです。

(C2)

2番目の失敗は、画面にファイルの内容がまったく表示されないことです。少ない数のいずれかに配管を接続しなければ、出力の存在を検出できません。

ファイルの内容が特定の場所から削除されると、このエラーを回避できます。

場所と理由を見つけました。

/e[?1049l\e[23;0;0t

アントン挨拶

  • 付録2022年5月1日

すべてのコンテンツをコンテキストで表示できるように、以下を追加します。この物語は私の投稿10.04.2022… /questions/698648/…

この記事では、pmapコマンドのPID 2205860が何であるかを言及するのを忘れました。これは、他の端末で実行される基本プログラムのPIDです。

/media/.../wels_fullpath -d/2>/dev/null | /media/.../wels_fullpath -d/2>/dev/null | grep -v -e "^fd1" >/tmp/WEx_fullpath_of_slash_ie_mountpoint_of_cow_fs_overlay__unsorted

私の主なプログラムは、誰が何をしたのかを分析するのに役立つために数日間実行されたため、一晩で上書きされたファイルシステムで多くのGBが盗まれました。

今後

df -Th -a が表示されます。

/ニウオーバーレイ 16G 1.3G 15G 8% /

私の元の質問は、「赤」のバッファがどこにあるかということでした。私はこれを迂回し、その問題を解決するために「少ない」を使用しなくなりました。

antondhdihによろしくお願いします

答え1

編集:また、一種の制御シーケンスがなければ、時計に出力をファイルにリダイレクトさせることはできません。バラより「watch」コマンドをリストに出力解決策を見つけてください。

設定によって生じる奇妙なことを排除するために、次の出力を比較してみることができます。

# ESC sequences should be visible. less -R should not output colors ans the output is broken.
watch -t "/bin/ls / --color=always" >/tmp/watch_nocolor.log

# different ESC sequences expected. less -R should show colors but again, broken output.
watch -ct "/bin/ls / --color=always" >/tmp/watch_colorinterpret.log

lsKubuntuの動作は私のLubuntuインスタンスと同じでなければなりません(問題を再現できます)。

監視しているコマンドをパイピングしてみてくださいcatwatch -t 'date | cat' > /tmp/Wex1しかし、別の方法で行動してはいけません。ただし、ほとんどのプログラムは端末に出力しないことに注意する必要があるため、コマンド全体の間に配置すると影響を与える可能性があります。

答え2

watch画面上のさまざまなコマンドの実行の違いを表示するように設計されています。次の実行の出力を見つける持つカーソルを移動します(ANSIエスケープシーケンスを使用)。

私の知る限り、削除する方法はありません。デフォルトでは、このプログラムはあなたの期待どおりに機能することを意図していません。

別のオプションはシェルループを使用することであるため、次のものを使用できます。

$ watch -t date >/tmp/Wex1

次のように特定のタスクを実行できますbash(デフォルトは実行間隔2秒watch)。

$ while date; do sleep 2; done >/tmp/Wex1

シェルの屋根構造を確認してください。プログラムでゼロ以外の終了コードを使用すると、場所によっては必要に応じてループが停止することがあります。

関連情報