私はコマンドを使用してきました:
reset
端末をクリアする私はこれが私がやるべきことではないことを確信していますが。リセットすると、その名のとおり、端末全体がリセットされます(多くのものが変更されます)。これが私が欲しいものです:
私は基本的にclear
というコマンドを使いたいのです。ただし、クリアしてから上にスクロールしても、以前から何トンものものが表示されます。一般的にこれは問題ではありませんが、長い総ログを見ているので、最新のログを表示していることを確認したいと思います。私はmore
またはそのようなものを使用できることを知っていますが、私はこのアプローチを好みます。
スクロールバックバッファはbashの機能ではなく、端末プログラムの機能です。あなたはどの端末を使っているのか言いませんでした。
Xtermを使っているなら、ESC-cを端末にエコーすることで保存された行を消去することができるかもしれません。
これはあなたが使っているどんなターミナルプログラムでも動作するかもしれません。
Linuxではこれはおそらくうまくいくでしょう:
echo -e '\0033\0143'
freeBSDでは、echoは-eを受け付けないため、試すことができます。
printf '\033\143'
各仕事に適したツールを使用してください。
端末ウィンドウをクリアするにはclear
を使用してください。
端末が制御シーケンスによってめちゃくちゃになったときにリセットするには、reset
を使用します。
cat
は、たくさんのデータをある場所から別の場所へ途切れることなくストリーミングする場合にのみ使用してください。
出力のページを表示するには、less
やmost
などのポケットベルプログラムを使用します。
いくつかの異なるログファイルを見るにはtail -f /var/log/foo.log /var/log/bar.log
を使います。
tail
を指定した場合、ログファイルでよく見られるように、新しいファイルがその場所に表示されてもファイルの追跡を継続できるため、-F
オプションの方が適しています。技術的な答えを提供するために、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"'
と同じです。
おそらくすべてをクリアする最善の方法は端末の機能を使うことです:
これにより、両方のバッファがきれいに消去され、端末の状態が起動時の状態に正確にリセットされます(これはreset
を使用した場合と同じ場合もそうでない場合もあります)。
もう一つの端末はiTerm2です、そしてそれはスクロールバックをクリアするのに使用される幾分奇妙なエスケープシーケンスを持っています。 Bashシェルでは、次のように使用します。
echo -ne '\033]50;ClearScrollback\a'
スクリプトで。つまり、基本的にはESC文字で、その後に "]50;ClearScrollback
"とそれに続くBEL文字が続きます。
-W + F foo.log
+F
はtail -f
に似た "follow"のためのものですが、スクロールして戻ることもできます。
すべてのvteベースの端末(GNOME、Xfce、Roxterm)およびKDE Konsoleでは、スクロールホイールを使ってless
内をスクロールできます。私はそれが非常に有罪判決だと思います。
clear
の代わりに:
Perl -e 'print "\ n" x512;'
xterm -e 'tail -f foo.log'
Mac OS XのTerminal.appの場合:
表示 - >スクロールバックをクリア(または command - K)
それは「bash」問題ではありません。使用する端末によって異なります。たとえば、私はリモートLinuxマシンを接続するためにmacbookで "iterm2"を使います。あなたはバッファをきれいにするために "command + K"を使うことができます、あるいはメニューから "Edit" - > "Clear Buffer"を選んでください。
FreeBSDでハードウェアTTY用のスクリーンバッファをきれいにするには、 "vidcontrol - システムコンソールの制御と設定ユーティリティ"をパラメータ-Cと共に使います。履歴バッファをクリアします。
vidcontrol -C
このコマンドは、現時点で表示されているものより上に、現在のコンソールのすべてのスクリーンバッファを消去します。あなたは最初に「クリア」したいと思うかもしれませんし、そうでない場合もあります - あなた次第。
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) ...
ログファイルの最新のエントリを確認したい場合は、代わりにtailを使用することをお勧めします。 clear
/cat
を使っていると思います。
うーん。あなたがkonsoleを実行しているのなら、あなたは運が悪くなっていると思います。それはあなたがただ「クリアスクロールバック」であることができたものでした。 Konsoleはそれ以上あなたにそれをさせません。あなたもそれをリセットしなければならないので、それはあなたが走っていたどんなプログラムも殺します。私は新しい端末プログラムが必要だと思います......