これはコマンドの出力ですclear...

これはコマンドの出力ですclear...

新しくインストールされたDebianシステムでは、sshを介して/ dev/pts/0にログインし、次のコマンドを入力しました。

watch -n 10 clear > /dev/pts/0 ; netstat -tupn 2>/dev/null | grep -v 3306 > /dev/pts/0

私が得るものは次のとおりです

Every 10.0s: clear                                              Thu Jan 30 17:42:01 2020

^[3;J^[H^[2J

このLinuxボックスはなぜ私を嫌うのですか? ? ?

答え1

これはコマンドの出力ですclear...

あなたは逃げましたclearclearこれらの制御シーケンスを生成します。 (マイコンピュータでは順番が異なります。)

%クリア|cat -v;echo
^[[2J^[[H^[[3J]
%

ECMA-48端末または端末エミュレータでは、これらの制御シーケンスはディスプレイを消去し、カーソル位置を指定します。

%クリア|コンソールデコードECMA48
ED 2
カップ0
ED 3
%

ただし、このwatchコマンドは実行されるプロセスの標準出力を解釈し、1つを除いてECMA-48制御シーケンスを理解していません。 1968年の一部のTTY-37制御文字と(-cこのフラグが使用されている場合)ECMA-48のSGR制御シーケンスのみが理解されています。

ncurses に渡されるすべての項目は、キャレット表記で制御文字を印刷します。しかし、間違いのせいでwatchこの場合、キャレット文字列の2番目の文字がすぐに上書きされ、表示されるべき内容はinの出力^[[と同じです。^[watch

...そしてclear注文だけです。

シェルスクリプトはまったく引用されません。

watch -n 10 クリア > /dev/pts/0; netstat -tupn 2> / dev / null | netstat -tupn 2> / dev / null | grep -v 3306 > /dev/pts/0

したがって、2つの順次パイプラインは次のようになります。

時計 -n 10 クリア > /dev/pts/0
netstat -tupn 2> / dev / null | netstat -tupn 2> / dev / null | grep -v 3306 > /dev/pts/0

リダイレクトはコマンドが実行される前に発生し、どちらの場合も標準出力を開く擬似端末にリダイレクトします。それでも。事実上no-opsです。

時計 -n 10 クリア
netstat -tupn 2> / dev / null | netstat -tupn 2> / dev / null | grep -v 3306

あなたの機械はあなたが指示したように正しく動作しています。

したがって、コマンドの出力を継続して報告し、clearその出力は制御シーケンスとして処理されず、壊れたカラット表記でのみ印刷されます。

コマンドを一度watch実行するには終了します。netstat

関連情報