web-dev-qa-db-ja.com

Mac OS Xのターミナルで以前の出力を消去する方法

現在の画面を「クリア」するclearコマンドを知っていますが、これは多くの改行を表示することによってこれを行います - クリアされた内容はスクロールアップされるだけです。

上にスクロールしても到達できないように、端末からの以前の出力をすべて完全に消去する方法はありますか?

450
Eonil

端末を手動で消去するには:

+K

Command+K 新しいキーボード用

シェルスクリプト内から端末を消去する。

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
945
Alok Singhal

スクリプト内から画面をクリアするためのより良い方法...

あなたがOSXターミナルアプリを使っているならば(OPによって述べられているように)、もっと良いアプローチ( https://Apple.stackexchange.com/a/113168 のおかげで)これだけです:

clear && printf '\e[3J'

スクロールバックバッファをクリアします。そしてそれはAppleScriptを実行するよりも速いです。他のオプションもあります。詳細については、 https://Apple.stackexchange.com/a/113168 を参照してください。

元の答え

このスレッドで示されているAppleScriptの答えはうまくいきますが、アクティブになっている可能性があるすべての端末ウィンドウをクリアするという厄介な副作用があります。あるウィンドウでスクリプトを実行していて、別のウィンドウでスクリプトを実行しようとしている場合、これは驚くべきことです。

これを回避するには、 https://Apple.stackexchange.com/a/31887 から取得します。

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

...しかし、それが現在のウィンドウではないときのように、出力はそれが再び現在になるまで積み重なります。

71
fearless_fool

かわいい方法はprintf '\33c\e[3J'です

46
qiuyi

これをあなたの.bash_profileか.bashrcに入れてください。

function cls { 
osascript -e 'tell application "System Events" to keystroke "k" using command down' 
}
33

Mac OS Xターミナルでは、この機能は既にターミナルアプリケーションにView->Clear Scrollbackとして組み込まれています(デフォルトは CMD+K).

だからあなたはAppleのキーボードショートカットを使って好きなようにこれを再割り当てすることができる。 「Clear Scrollback」コマンドでTerminalの新しいショートカットを追加するだけです。 (私が使う CMD+Lに似ているので CTRL+L バッファをクリアせずに現在の画面の内容をクリアします。)

スクリプト内でこれをどのように使用するかわからない(おそらく他の人が指摘しているようにAppleScript)。

19
SeaSide

Mac OS X Yosemite(10.10)では、Terminal.appでスクロールバックを解除するためにOption + Command + Kを使用してください。

10
David J.

またはを押して、 改ページ (ASCIIフォームフィード)を送信することもできます。

CTRL+L

これは技術的には新しいページを開始するだけですが、他のすべての方法と同じ効果がありますが、はるかに高速です(もちろん、Apple + Kソリューションを除く)。

これはASCII制御コマンドなので、すべてのシェルで機能します。

8
user2897962
clear && printf '\e[3J'

すべてをクリアし、osXでもうまく機能します。とてもきれい

次のように端末に入力すると、あなたの履歴は消去されます(上矢印を押すと意味がなくなります) - しかし、画面はクリアされません。

history -c
3
phil

正しいことをする、正しいことをする!

前のマークをクリア:Command-L

前のブックマークをクリア:Option-Command-L

クリアしてください:Command-K

あなたのみんなを助けて!

3

私は上のどれも動くことができなかった(macOS上で)。

組み合わせは私のために働いた -

IO.write "\e[H\e[2J\e[3J"

これでバッファと画面がクリアされます

1
Michael Baldry

Command + Kは前の出力を消去します

入力したテキストを消去するには、まず "Command + A"で左にジャンプし、次に "Control + K"でポインタの右側にあるテキストを消去します。

視覚的な例: enter image description here

0
Punnerud

最後の出力のみを削除するには:

+L

端末を完全にクリアするには

+K

0
Aman Jain