端末をリセットおよびクリアするには、どのコマンドを使用できますか?


64

私はコマンドを使用しています:

reset

ターミナルをクリアします。これは私がすべきことではないと確信していますが。リセットは、名前が示すように、ターミナル全体をリセットします(多くのものを変更します)。ここに私が欲しいものがあります:

私は基本的にコマンドを使用したいと思いますclear。ただし、クリアしてから上にスクロールすると、以前から大量のものが残っています。一般に、これは問題ではありませんが、長いログを確認しているので、最新のログのみを表示するようにします。私はそのmoreようなものを使用できることを知っていますが、このアプローチを好みます。


ここで正確に何が求められているかについて多くの混乱があるようです。質問を明確にできますか?ターミナルスクロールバックバッファーをクリアして、正確に何を達成しようとしていますか?(もしそうなら、あなたはどの端末アプリケーションを使用していますか?)
クワックキホーテ

1
Ctrl-Lは、clearプログラムを実行するのと同様に、bash(デフォルトのemacsモード)で画面をクリアします。

IntelliJ IDEのbashターミナルでこれをテストしました。正常に動作し、まさに私が望んでいたスクロールバックをクリアします。ありがとう。
イアンルイス

私はこれが死に答えられたことを知っていますが、あなたが望むのはであると思いますclear && printf '\033[3J'。端末のリセットはなく、画面上のテキストをクリアするだけです。この投稿を参照してください:superuser.com/questions/555554/…–
jwd

回答:


57

スクロールバックバッファはbashの機能ではなく、ターミナルプログラムの機能です。使用している端末を言わなかった。

xtermを使用している場合、ESC-cを端末にエコーすることにより、保存された行をクリアできる場合があります。

これは、使用している端末プログラムで機能する場合と機能しない場合があります。

Linuxでは、これはおそらく動作します:

echo -e '\0033\0143'

FreeBSDでは、echoは-eを受け入れないため、以下を試すことができます。

printf '\033\143'

xtermを使用しています。しかし、私はあなたが何を意味するのか理解していません。文字を入力する必要がありecho ESC-cますか?
sixtyfootersdude

2
@sixtyfootersdude:いいえ、リテラルではありませんESC。ウィキペディアの記事「エスケープ文字」と「制御文字」を読んでくださいESC-ASCII文字0x1Bを示すためによく使用さ^VEscます。
-grawity

1
してはいけません。ソリューションに未加工のターミナルエスケープシーケンスを記述する必要がある場合は、ソリューションを再考する必要があります。猫の代わりに「少ない」を使用します。「端末エスケープシーケンス」について本当に知りたい場合は、Googleがお手伝いします。
クレイグ

2
@HaraldNordgrenは、echo -eよりも標準のprintfを使用する方が適切です。
良い人

3
なぜ\0143代わりにc
-ruakh

51

各ジョブに適切なツールを使用します。

  • clear端末ウィンドウをクリアするために使用します。

  • reset制御シーケンスによって台無しになったときに端末をリセットするために使用します。

  • cat大量のデータをある場所から別の場所に中断せずにストリーミングする場合にのみ使用します。

  • lessまたはなどのポケットベルプログラムを使用して、most出力のページを表示します。

  • tail -f /var/log/foo.log /var/log/bar.logいくつかの異なるログファイルを見るために使用します。

    • GNU tailでは、-Fログファイルによくあるように、新しいファイルがその場所に表示されてもファイルを追跡し続けることができるため、このオプションの方が優れています。

14
これは本当に私の質問に答えません。
-sixtyfootersdude

7
うん。catファイルを読み取ってそれらを連結したり、catファイルを連結して連結したりしないでください。ファイルの読み取りに使用する量を減らしてください。同じ問題はありません。
リッチブラッドショー

「猫の無駄な使用」を
調べる-galois

多くの人は、を使用しcatて何かを読むことに反対していますが、小さなファイルの場合cat、を使用するよりも実際に多くの意味をなしますless。ファイルが端末にダンプされると、less他の操作を行う前に閉じる必要がなく、何度でもファイルを検索/スクロールできます。
GKFX

22

技術的な答えを提供するために、reset端末をゼロから再起動したかのように再初期化します。stty sane多くの同じ機能を実行します(リセットなし)。これは^L(Ctrl + L)(irrc)と同じですtput clear。前のポスター(@grawity)が言ったことにもかかわらず、大量clearの改行を出力しません。でTERM定義されているように、terminfoまたは(xterm)termcapを使用しgnome-terminalて、コマンドと同じであるリセットを送信しますperl -e'print "\33[H\33[2J"'

端末全体をリセットするのと比較して、バッファをクリアするだけの場合は、これを試してくださいtput reset。それ非常に高速で、必要なことを行う必要があります。(ただし、実際にファイルを読み込む必要がありますless

tput reset、リセット用のterminfo値を送信します-私の端末(xterm)では次と同じです perl -e'print "\33c"'


1
私はなかったではないと言うclearの出力に改行の束を。画面をクリアするだけで、スクロールバックバッファーはクリアしないため、代わりにコマンドを提供しましたclear。(少なくともPuTTYまたはKonsoleにはありません。)
grawity

1
まさにそのため、大量の改行を印刷することは、実際にはクリアに代わるものではありません-ターミナルがクリア信号で何をするのかわからないのです。それはちょうどあなたがあなたの端末を処理する方法を知っているデータベースを持っている新しい人々に伝えるために優れている、それはマッピングし、1〜2のキー値を持つclear信号に信号名として、およびマッピングし1 resetと後者のみ-信号にスクロールバックバッファがクリアされます。reset後者を送信し、他の楽しいことを実行します。
エヴァンキャロル

1
sixtyfootersdudeの元の質問によると、彼のスクロールバックリセットされclearませ。(ESC cで働くxtermとVTEベースではなく、パテやkonsoleの中で。)彼が使用する必要はありませんreset、それは彼が望んでいるよりも多くをリセットするために、どちらか。(私は彼がどの端末を使用しているのかわかりませんがstty、リセットの前後で比較します。)
grawity

2
私が言ったように、彼はおそらくtput reset、実際に用語を再初期化することなく、リセット信号を端末に送信します。"reset-初期化文字列を出力する代わりに、端末のリセット文字列が存在する場合は出力されます(rs1、rs2、rs3、rf)。リセット文字列が存在しないが、初期化文字列がある場合、初期化文字列が出力されます。それ以外の場合、リセットはinitと同じように機能します。」ここでは、初期化文字列が実行されないように文字列をリセットしています。
エヴァンキャロル

+1:提案のために、しかしtput reset非常に遅い(と同じreset)。 printf '\033\143'はるかに高速です。printfメソッドが危険/悪い理由はありますか?
-sixtyfootersdude

9

もう1つのターミナルはiTerm2で、スクロールバックをクリアするために使用されるやや奇妙なエスケープシーケンスがあります。Bashシェルでは、次のようなものを使用します。

echo -ne '\033]50;ClearScrollback\a'

スクリプトで。したがって、基本的にはESC文字で、その後に「]50;ClearScrollback」、BEL文字が続きます。


1
CMD + KはiTerm2で機能します。CTRL + Kは他の多くで機能します。
ブロックループ14年

私はそれは私がシェルスクリプトからiTerm2スクロールバッファをクリアしてみましょうので、このソリューションが好きで、ときのようなものclearresetはないだろう。ただし、これは質問に対する最良の答えではありません。私はそのような場合のために正しい答えはiTerm2でコマンド-Kのようなものは何でも端末アプリケーションの提供、制御-K等、他の人にだと思う
LS

8

おそらくすべてをクリアする最良の方法は、端末の機能を使用することです:

  • Konsole:Ctrl+ Shift+ KView→Clear Scrollback and Reset
  • GNOMEターミナル:編集→リセットしてクリア
  • PuTTY:Ctrl+ right-click→スクロールバックをクリア

これにより、両方のバッファが完全に消去され、端末の状態が起動時の状態に正確にリセットされます(これはを使用した場合と同じ場合もそうでない場合もありますreset)。


うーん、私は私のノームの下にそれを持っていません
...-sixtyfootersdude

@sixtyfootersdude:私はそれを確信している私は、正確なメニューを(使用することはできませんかわからない、そこgnome-terminalの瞬間に自分自身を)...「ツール」や他のメニューを見てみましょう。
-grawity

xtermのctrl-middleボタン->「保存された行のリセットとクリア」
クレイグ

3
less -W + F foo.log

+F「フォロー」用で、似てtail -fいますが、スクロールバックもできます。

すべてのvteベースの端末(GNOME、Xfce、Roxterm)およびKDE Konsoleでは、スクロールホイールを使用して内部をスクロールできlessます。とても便利だと思います。


の代替clear

perl -e 'print "\ n" x512;'

xterm -e 'tail -f foo.log'

3

Mac OS X Terminal.appの場合:

表示->スクロールバックをクリア(またはcommand- K


@Rohit 質問が特にMac OS X Terminal.appに関するものであれば、そう、これは素晴らしい答えです。ただし、元の質問は曖昧であり、どの端末とOSが使用されているかに関して、私が知る限り最良です。
デビッドJ.

2

「バッシュ」の問題ではありません。使用する端末によって異なります。たとえば、macbookで「iterm2」を使用してリモートLinuxマシンを接続します。「command + K」を使用してバッファを消去するか、メニューで「編集」->「バッファをクリア」を選択します。


1

PuTTYを実行しているときにコンソール画面とスクロールバックバッファーをクリアするには、次のようにします。

echo -en "\ec\e[3J"

これは、実際には独立して動作する2つの「Esc」シーケンスです。これらはいずれの順序でも使用できます。

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

使用してecho -en "\ec"、端末をリセットすることはあなたの他の端末の設定の一部を変更する場合があります。「リセット」の代わりに、これを行うことができます:

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

これをシェルスクリプトに入れると問題なく動作します。


システムに依存関係がある場合:

PuTTY(リリース0.60)でPuTTY接続マネージャー(バージョン0.7.1ベータ(ビルド136))を使用しています。

タイピング:

echo \"$TERM\"; /bin/sh --version

レポート:

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...

1

FreeBSDのハードウェアTTYのスクリーンバッファを消去するには、「-control-system console control and configuration utility」パラメータ-Cを使用して履歴バッファをクリアします。

vidcontrol -C

このコマンドは、現在のコンソールのすべての画面バッファーを、現在表示されているものよりも上に空白にします。あなたは最初に「クリア」したいかもしれませんし、しないかもしれません-あなた次第です。


0

ログファイル内の最新のエントリを確認している場合は、おそらく、使用していると思われる/の代わりにtailを使用することをお勧めします。clearcat


実際、tail -f(連続ログ)を使用していますが、何千行も吐き出すことがあるため、スクロールバックすることが重要です。ただし、古いログに戻らないことを知っておくといいでしょう。
-sixtyfootersdude

0

うーん。コンソールを実行している場合は、運が悪いと思います。以前は「スクロールバックをクリア」するだけでした。Konsoleでは、これ以上はできません。リセットする必要もあるので、実行中のプログラムはすべて終了します。新しい端末プログラムが必要だと思います......

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.