新しくインストールされた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
...
あなたは逃げましたclear
。 clear
これらの制御シーケンスを生成します。 (マイコンピュータでは順番が異なります。)
%クリア|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
☺