`top -n1|' を実行するとカーソルが消えます。

`top -n1|' を実行するとカーソルが消えます。

走っている間

top -n1 | head

端末のカーソルが消えます。走ればtop -n1戻ってきます。

gnome-terminaltilixUbuntu 16.04およびCentOS 7.5でテストされました。


この問題なく実行すると、出力の終わりにカーソルが再び表示されるように見えますtop -n1 | tailが、これは印刷時にのみ発生しません。tophead

原因は何ですか?カーソルをより適切に復元する方法は?

ベストアンサー1

IMHO、最良の方法は、他のプログラムやファイルへのパイプなどの非対話型ユースケースで使用するように設計されたtop「バッチ」モード(フラグ)を使用することです。-b

だからこれ

top -n1 -b | head

カーソルがなければシェルを離れません。

についてはカーソルが消えたのはなぜですか?...

topインタラクティブなプログラムなので、入力を受け取り、項目をスクロールするなどの操作を実行するために、端末を「乱雑に」します。隠れるカーソル。

終了すると、呼び出される前に見つかったカーソルと表示状態を復元する必要があります。制御コード端末自体に。

コマンドをパイピングすると、headこの制御コードは失敗します(headデフォルトでは最初の10行だけが印刷され、両方の出力topと端末の状態を復元するための制御コードは常に> 10行です)。

実際にhead印刷するのに十分な行を与えると、カーソルが表示されます!

例えば、

top -n1 | head -n 100

私のシステムにカーソルが残っています。

おすすめ記事