Gnomeターミナルの履歴をクリアするにはどうすればよいですか?


59

ターミナルでclearcommandまたはCtrl+ を使用するとL、ターミナルはクリアされますが、最後に使用したコマンドを表示するためにスクロールバックできます。端末を完全にクリアする方法はありますか?


それは端末に依存しており、どの回答もそれを解決しません。
トーマスディッキー

回答:


69

を使用できますtput reset

またresettput reset次のシェルスクリプトを使用できます。

#!/bin/sh
echo -e \\033c

これEsc-Cは、端末をリセットする制御文字をコンソールに送信します。

Googleキーワード:Linuxコンソールコントロールシーケンス

man console_codes 言う:

シーケンスESC cにより、端末がリセットされます。これは、画面がすべて文字化けしている場合に必要です。よく推奨される「エコー^ V ^ O」は、G0を現在の状態にするだけですが、G0がテーブルa)を指すという保証はありません。一部のディストリビューションには、「echo ^ [c」を実行するプログラムreset(1)があります。コンソールのterminfoエントリが正しい場合(およびエントリrs1 = \ Ecがある場合)、「tput reset」も機能します。


1
リセットとtputリセットの違いは何ですか?
歯磨き

tput resetreset少なくともUbuntu 16.04 よりも高速です
イヴァンロドリゲストレス

5
-1、上にスクロールしてもバッファを見ることができます
ジョアンピメンテルフェレイラ


15

あなたがgnome端末を使用していることは知っていますが、Macを使用している可能性のある他の人(私のように)にヒントを返事すると答えました。

使用しているTerminal.app場合iTerm.app、または上Control+Lにスクロールして端末が空白に見える場合、Cmd+K実際には端末をリセットし、スクロールバックをクリアします。

または、端末のキーボード設定を設定できる場合は、上記のようCtrl+Kに入力などの何かを割り当てることができますecho -e \\033c


2
Cmd+K欲しかった。ty
ガウラフガンジー

9

Anthonの回答はKDE Konsoleで機能しますが、urxvtでは機能しません。urxvtでは、スクロールバックをクリアするために(それが行う他のすべてのことと一緒に)リセットを数年間使用しており、Konsoleで機能しないことに満足していませんでした。だから今Linux用に私は新しいエイリアスを持っています:

alias allclear='clear; echo -e "\033c\e[3J"'

ただし、OS Xでは機能しません。

tput reset AFAICTのコンテキストでは機能しません。

KDE konsoleのでは、ctrl- - shiftk現在のシェルプロンプトを含むので、それは完全に空の)スクロールをクリアします。OS X上のITERMやAppleの端末では、cmd- shift- kまた、スクロールをクリアします。この機能をurxvtに追加するには、これを〜/ .Xresourcesに追加します。

urxvt*keysym.C-S-K: command:\033c

この回答は、Linux Bashを使用している人なら誰でも、コマンド+ Kを押してMacで受信するのと同じ結果を期待しているなら好きになる答えです。 /etc/bash.bashrcの(その後、サーバーからログアウトし、再度ログインすると、allclearコマンドで動作します): allclear(){`echo"端末とスクロールバックをクリアしています... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }`編集:書式設定が機能しません。誰かがこれを編集して読みやすくすることができたら、感謝します。
KLaw

3

私は何年も前にネットでこれを見つけましたが、私にとってはうまくいきます。スクロール履歴なしで端末を完全にクリアします。

echo -e "\e[3J"

2

bashcsh、およびfish shellのF12各シェルでクリアスクリーンにマップしました。私のコマンドは、現在の行に既に入力したものを保存するため、以前のコマンドとは異なります。(注:以下の構成はすべて端末に依存していますが、ほぼすべての場所で機能することを願っています)

バッシュ

ファイル~/.inputrcを開き、次の行を挿入します。

"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"

利用可能な結合新しいキーを持っている、いずれかの新しいターミナルを開いたり、入力しCtrl+ Xその後、Ctrl+ R現在の端末で.inputrcのファイルをリロードします。

説明
ファイル〜/ .inputrcは、bashターミナルのキーバインディングを制御します。

ラインについて:

  1. 行の最初の部分、"\e[24~"はキーをマップしますF12
  2. C-kCtrl+はX)キル・リング(バッシュのコピーと過去の記憶)をクリアします。
  3. スペースは、次のコマンドでビープ音を回避します。
  4. C-uCtrl+はU)キル・リングに現在の行を送信し、それを消去します。
  5. echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n端末に2グループ化されたコマンドを送信します。で区切られ;、で終了し\nます。
    • echo -ne '\\ec\\e[3J'画面をクリアします。
    • history -d $((HISTCMD-1))歴史に入ることから、これらの2つのコマンドを避けることができます。
  6. C-yCtrl+がY)によって格納されたキルリング貼り付けC-uコマンドを。
  7. C-?Ctrl+は?)と同等であるBackspaceと、上記のステップ3に挿入されたスペースを除去します。

参照:

csh

次のコマンドを入力します。
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
また、.cshrcファイルに挿入して、キーバインディングをすべての新しいターミナルにロードすることもできます。
(はい、bashよりもはるかに簡単です)

魚の殻

次のコマンドを入力します。
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
関数fish_user_key_bindingsを編集して保存し、すべての新しい端末にキーバインディングをロードできます。
(はい、bashよりもはるかに簡単です)


2

[Ubuntu 16.04]

.bash_history 端末を閉じられると、ファイルはユーザのホームディレクトリに作成されます

便利ですが、必要に応じて削除することもできます。それでも、ターミナルの使用を終了するたびに作成されます。

以下から手動で削除できます。

  • ファイルブラウザ。

  • ターミナル:ターミナルを閉じると、新しい.bash_historyファイルが作成されることに注意してください(デフォルト構成に基づいています)。

または、必要な機能をbashrcからリンクされたファイルに保存する場合、カスタム関数を呼び出すことができます。コードをそこに配置したい場合はbashrc自体を編集できますが、次の例は別のファイルにあります

正直なところ、これは私には役に立ちませんが、終了する前にコマンド履歴を削除したい場合

は、これを行うことができます:.bash_custom #this is my custom file

blotout() {
    HISTSIZE=0
    rm $HOME/.bash_history
    exit
}

次に、ファイルの名前とパスを追加します
.bashrc#これはbashの構成ファイルです(私は思う)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

そしてそれがすべてです。

しかし、あなたが望むことを正確に行うには、カスタムファイルでこの関数が必要であり、それをリンクするだけです:

refresh() {
        tput reset
        H=HISTSIZE
        HISTSIZE=0
        HISTSIZE=H
}

または、必要に応じて関数を.bashrcに配置しますが、その方法では、関数の後にexportステートメントが必要になる可能性があります。ファイルが更新された場合、おそらく関数が失われます。 D
.bashrcまたは「カスタム」ファイルを編集するときは、ターミナルを再起動する必要があることに注意してください。


1

私にとって、CentOS 7に対してPuTTYを使用すると、クリアはスクロールバックにクリアコマンドのみを残しますが、クリアコマンドの2つのインスタンスである「clear && clear」を同時に実行すると、スクロールバックが完全にクリアされ、スクロールバーがなくなります。やってみて それは奇妙な解決策ですが、これらのどれもスクロールバックを効果的にクリアしませんでした。


0

~/.inputrc完全なクリアをバインドするために追加されましたF12

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'

0

Fedora 30では、$ HOME / .bash_historyファイルを削除することで履歴を削除します。キーボードを使用して端末履歴ファイルをクリアする最も簡単な方法は次のとおりです。

  • Alt+ F4を押して各GNOMEターミナルウィンドウを閉じ、必要に応じてAlt+ TabまたはAlt+ Shift+でウィンドウを切り替えTabます。(.bash_historyファイルは閉じられたときに作成または更新されるため、すべてのターミナルウィンドウを閉じる必要があります。)
  • Alt+を押しF2ます。
  • キーを入力nautilusして押し、Enter(GNOME)ファイルアプリケーション(以前はNautilusと呼ばれていた)を開きます。
  • 隠しファイルを表示する必要がある場合は、Ctrl+を押しHます。
  • 入力.bash_history(ウィンドウを開いた直後に入力した場合、検索バーに表示されます。それ以外の場合は、検索バーにCtrl+ でアクセスできますL)。
  • 下矢印キーを押してファイルを選択します。これが唯一の検索結果になります。
  • ファイルを完全に削除するには、Shift+ Deleteを押します。(Delete代わりに、変更されていないキーを使用する場合、.bash_historyファイルには、ごみ箱フォルダーからアクセスできます。)

-2
cat /dev/null > ~/.bash_history && history -c && exit

できることは、答えの説明と書式設定です。
パラドックス

(1)OPが以前のコマンドのシェルのメモリ(履歴)を削除することを望んでいるかどうかは不明です(質問は端末に関するものです)。あなたはそれを見ることができませんがhistory -c、2つの以前の回答で提示されており、質問に対する正しい回答ではないため削除されました。ターミナルウィンドウを閉じると、(おそらく)前のコマンドの端末のメモリを消去しますが(2)、それはだはるか OPはそれをやりたいことは明白から。…そしてPS単一のexitコマンドがターミナルウィンドウを閉じることは保証されていません。
G-Manが「Reinstate Monica」と言う
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.