ターミナルに出力を残さずにtopを終了するにはどうすればよいですか?


30

終了topする方法と同様にless、つまり、画面に出力を残さないようにするにはどうすればよいですか?

これは私が持っているバージョンです:

procps-ng version 3.3.9

などの代替手段を使用してはどうhtopですか?
-DarkHeart

回答:


48

このように起動すると......

top && clear

... qでtopを終了すると、画面がクリアされます。

これは次のように機能しますless

tput smcup ; top ; tput rmcup

(コマンドが実行されるsmcupセカンダリ画面に切り替わり、top終了top rmcupすると通常画面に戻ります)


あなたはそれを行うためにtopコマンドをエイリアスすることができます(永続的なBashエイリアスを作成するにはどうすればよいですか?


3
clearスクロールバックバッファーの最後の画面以外もすべて消去するようです(したがって、この場合はtopの最後の画面だけを残します)-少なくともxfce4-terminalとQTerminalでは。tput答えは、特にの別名で、素晴らしい作品top
Xen2050

2
クイックフィックスのためにCtl + Lを忘れないでください。
jpaugh

ああ、面白い。lessの最後の出力がバッファから完全に消えたのはなぜだろうと思っていました。
ライトネスレース、モニカ

他のいくつかの提案:1. far-superior-but-not-built-in htopを使用し、2。コマンドをエイリアス化して、毎回手動で連鎖する必要がないようにします。
フリス

@flith他のユーザーの回答を盗むつもりはありません;
Rinzwind

31

皮肉にも1、これは簡単にの行動でしたtop。3.3.8ではtop、画面をクリアしましたが、過去またはそれ以降のバージョンではクリアしませんでした。Red Hatバグ#977561を参照してください。

スクリーンクリアは、広く使用されているいくつかの端末アプリケーションによって生成されたSIGWINCH信号で「トップ」ツールがあふれることを抑制するために、ジムワーナー(「トップ」ツールの著者)によって導入された端末操作の変更の間接的な結果です。洪水の問題を報告したのは私であり、彼はそれを解決するために最善を尽くし、8つの別個のコミットの形で問題の修正をリリースしました。スクリーンクリアを導入するコミットには、「dedaf6e1a81738ff08ee8e8523871e12f555ad6d」というハッシュがあります。

バグレポートのため、ジムは3.3.9で再び出力をクリアないように修正しました

topこれを制御するオプションや構成設定はありません、AFAICT、これは完全にハードコードされた動作です。https://gitlab.com/procps-ng/procps/issues/で機能リクエストを提出することもできます

それまでは、Rinzwindが推奨するようにclear手動で使用するか、steeldriverが推奨するtputように使用できます。


興味深いことに、上記のコミットには、スチールドライバーが提案したコマンドの説明もあります。これは、実際にはコードで最初に行われたものと同じであるためです。

いくつかのターミナルエミュレータで使用されるスクロールバックバッファは、サイズ変更操作を行った後のユーザーにとって実際に不便です。トップのディスプレイを適切にレンダリングするために、追加のキーストロークが頻繁に必要になります。

多くの調査の後、そのくまのスクロールバックバッファを無効化/復元する効果を持つ2つのterminfo文字列を発見しました。「カップを使用してプログラムを開始/終了する」という文字列のタイトルの下に隠されていました。次に、「cup」はttyのカーソルアドレス指定機能を処理します。

彼らが仕事を成し遂げる限り、あなたがそれらを何と呼んでいるか、彼らが何を指しているかは気にしません。そして、これらは本当にそうです!ただし、いくつかの副作用があり、そのうちのいくつかは有益であると考えることもできることに注意してください。

  • enter_ca_mode / smcup / tiは、スクロールバックバッファリングを無効にします(そしてそれは良いことであり、私たちが常に望んでいたことです)

  • exit_ca_mode / rmcup / teは、スクロールバックバッファーを復元します(ただし、画面上部のプレトップに既存の内容も復元します)(以前のプログラム終了結果とは異なります)(最後にレンダリングされた画面はそのまま残されます)

... tput smcupおよびand tput rmcupコマンドに対応します。


1 必須のxkcd。


興味深いことにBSDのトップ(例えばMacOSの上では)また、端末をクリアしない
デジタルトラウマ

15

lessから探している動作は、htopと呼ばれる代替手段に組み込まれています。以下でインストールできます:

sudo apt-get install htop

具体的には、htopを閉じたときに元の画面コンテンツの保存を開始する前に、代替画面モードに切り替えます。また、procpsのトップを超えるさまざまな拡張機能も備えています。インストールしたら、通常のユーザーとして実行できます。

htop

Plus htopは非常にカラフルで、マウスサポートなどを追加します。
WinEunuuchs2Unix18年

4

以下を使用できますwatch

watch top -b

デフォルトでは2秒ごとに更新されます-n1。この動作を変更する場合は、たとえば1 秒間使用します。終了するには、通常の代わりに+ をwatch押します。CtrlCQ

別のアプローチは、たとえば次のように、新しいターミナルウィンドウを開くことxtermです。

xterm -e top

これはtop通常とまったく同じように動作し、終了topするQとウィンドウが閉じます。もちろん、起動元の端末には出力が残されません。&このコマンドの最後に追加してバックグラウンドで起動し、すぐに端末を再び離します。


1

Rinzwindの回答が指摘しているように、clearコマンドtopは画面から出力を消去します。

終了後、+をtop使用することもできますCtrlL、をtopして画面から出力をクリアます。ただし、どちらのコマンドを実行しても、画面を上にスクロールして古いtop出力を表示できます。

top出力をスクロールして戻せないように画面を本当にクリアするには、reset次のコマンドを使用します。

top && reset

新しいセッションの「新鮮な外観」を与えるもう1つのオプションは、「ASCIIスプラッシュスクリーン」(ある場合)を実行することです。私の場合、次を実行します。

top && reset && now && screenfetch

今すぐリセットsplash.png

  • 私のnowスクリプトは天気、カレンダー(cal)、およびtoilet空想時間を。
  • screenfetch Ubuntuのロゴとマシンの統計をペイントします。

1
通常、そのファイルに次のような行があり、複数回実行すると不必要に拡張されるため、必要なく.bashrc 定期的に再実行することはお勧めしません。また、コールインは標準的な動作ではありません(見た目は素晴らしいですが)。たとえば、再実行すると、明らかな何も起こりません。export PATH=...:$PATHPATHneofetch.bashrc.bashrc
PerlDuck

Ctrlキーを押しながらLキーを押して同じclearように動作しないfor i in {1..200}; do echo "line $i"; done2つの異なる新しいウィンドウで試してください。次に、window1でヒットCTRL+Lclear、window2 で入力します。次に、両方のウィンドウ(マウスホイール)でスクロールバックします。CTRL+L-windowでは、スクロールバッファに応じてすべての行を表示できますが、-window では、1画面clearだけスクロールバックできます。つまり、スクロールバックバッファをクリアしますが、$ window_heightを押す(改行)に似ています。clearCTRL+LENTER
PerlDuck

1
@PerlDuck neofetchは良いキャッチですが、と呼ばれる派生物ですscreenfetch。デュアルブートとWindows Bashには異なるスプラッシュスクリーンがあるため、Ubuntuにいることを思い出させます。.bashrc参考にしましょう。clearCtrl+ に関しては、Lどちらもtopスクロールバックバッファーに出力を残すという点で似ています。
WinEunuuchs2Unix

2
誰もが異なることを持っていると思う.bashrc。試してくださいcurl wttr.in/Edmonton?0、それは素晴らしいです。curl wttr.in/:helpヘルプを取得するために使用します。/etc/update-motd.d/スクリプトレットでも同様の呼び出しがあるため、コンソールまたはsshからログインするときに通知されます(すべてのターミナルウィンドウではありません)。気に入った場合は--silent --max-time 3、curl呼び出しに追加して、インターネットが遅い場合に永遠にかかることがないようにしてください。
PerlDuck

@PerlDuck curl wttr.in/Edmonton?0はすごい!どうもありがとうございます。toiletスプラッシュスクリーンに時間を表示した後、それを
絞ろ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.