web-dev-qa-db-ja.com

端末をリセットしてクリアするために使用できるコマンドは何ですか?

私はコマンドを使用してきました:

reset

端末をクリアする私はこれが私がやるべきことではないことを確信していますが。リセットすると、その名のとおり、端末全体がリセットされます(多くのものが変更されます)。これが私が欲しいものです:

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

62

スクロールバックバッファはbashの機能ではなく、端末プログラムの機能です。あなたはどの端末を使っているのか言いませんでした。

Xtermを使っているなら、ESC-cを端末にエコーすることで保存された行を消去することができるかもしれません。

これはあなたが使っているどんなターミナルプログラムでも動作するかもしれません。

Linuxではこれはおそらくうまくいくでしょう:

echo -e '\0033\0143'

freeBSDでは、echoは-eを受け付けないため、試すことができます。

printf '\033\143'
56
Craig

各仕事に適したツールを使用してください。

  • 端末ウィンドウをクリアするにはclearを使用してください。

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

  • catは、たくさんのデータをある場所から別の場所へ途切れることなくストリーミングする場合にのみ使用してください。

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

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

    • GNU tailを指定した場合、ログファイルでよく見られるように、新しいファイルがその場所に表示されてもファイルの追跡を継続できるため、-Fオプションの方が適しています。
49
bignose

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

端末全体をリセットするのではなく、バッファをクリアしたいだけなら、tput resetを試してください。 とても速く、そしてあなたが望むことをするべきです。 (あなたは本当にlessでファイルを読むべきですが)

tput reset、resetのterminfo値を送信します - 私の端末(xterm)ではPerl -e'print "\33c"'と同じです。

21
Evan Carroll

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

  • コンソール: Ctrl+Shift+K 表示→スクロールバックを解除してリセット
  • GNOMEターミナル:編集→リセットとクリア
  • パテ: Ctrl+right-click →スクロールバックをクリア

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

8
grawity

もう一つの端末はiTerm2です、そしてそれはスクロールバックをクリアするのに使用される幾分奇妙なエスケープシーケンスを持っています。 Bashシェルでは、次のように使用します。

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

スクリプトで。つまり、基本的にはESC文字で、その後に "]50;ClearScrollback"とそれに続くBEL文字が続きます。

8
Sam Mason
-W + F foo.log 

+Ftail -fに似た "follow"のためのものですが、スクロールして戻ることもできます。

すべてのvteベースの端末(GNOME、Xfce、Roxterm)およびKDE Konsoleでは、スクロールホイールを使ってless内をスクロールできます。私はそれが非常に有罪判決だと思います。


clearの代わりに:

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

 xterm -e 'tail -f foo.log' 
3
grawity

Mac OS XのTerminal.appの場合:

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

3
acajaja

それは「bash」問題ではありません。使用する端末によって異なります。たとえば、私はリモートLinuxマシンを接続するためにmacbookで "iterm2"を使います。あなたはバッファをきれいにするために "command + K"を使うことができます、あるいはメニューから "Edit" - > "Clear Buffer"を選んでください。

2
Steven Huang

FreeBSDでハードウェアTTY用のスクリーンバッファをきれいにするには、 "vidcontrol - システムコンソールの制御と設定ユーティリティ"をパラメータ-Cと共に使います。履歴バッファをクリアします。

vidcontrol -C

このコマンドは、現時点で表示されているものより上に、現在のコンソールのすべてのスクリーンバッファを消去します。あなたは最初に「クリア」したいと思うかもしれませんし、そうでない場合もあります - あなた次第。

1
user

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(Release 0.60)で、PuTTY Connection Manager(バージョン0.7.1 BETA(build 136))を使用しています。

タイピング:

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

レポート:

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

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

0
Josh K

うーん。あなたがkonsoleを実行しているのなら、あなたは運が悪くなっていると思います。それはあなたがただ「クリアスクロールバック」であることができたものでした。 Konsoleはそれ以上あなたにそれをさせません。あなたもそれをリセットしなければならないので、それはあなたが走っていたどんなプログラムも殺します。私は新しい端末プログラムが必要だと思います......

0
Bruce