Bagaimana cara menghapus riwayat terminal Gnome?

59

Ketika kita menggunakan clearperintah atau Ctrl+ Ldi terminal, terminal akan dihapus tetapi kita masih dapat menggulir ke belakang untuk melihat perintah yang terakhir digunakan. Apakah ada cara untuk benar-benar membersihkan terminal?

hpn
sumber
Tergantung terminal, dan tidak ada jawaban yang menjawabnya.
Thomas Dickey

Jawaban:

69

Anda bisa menggunakannya tput reset.

Selain itu resetdan tput resetAnda dapat menggunakan skrip shell berikut.

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

Ini mengirimkan karakter kontrol Esc-Cke konsol yang mengatur ulang terminal.

Google Kata Kunci: Urutan Kontrol Konsol Linux

man console_codes mengatakan:

Urutan ESC c menyebabkan reset terminal, yang adalah apa yang Anda inginkan jika layar semua kacau. Sering disarankan "echo ^ V ^ O" hanya akan membuat G0 saat ini, tetapi tidak ada jaminan bahwa G0 menunjuk pada tabel a). Dalam beberapa distribusi ada program reset (1) yang hanya melakukan "echo ^ [c". Jika entri terminfo Anda untuk konsol benar (dan memiliki entri rs1 = \ Ec), maka "tput reset" juga akan berfungsi.

Sachin Divekar
sumber
1
Apa perbedaan antara reset dan reset tput?
Toothrot
tput resetlebih cepat daripada resetdi Ubuntu 16.04, setidaknya
Iván Rodríguez Torres
5
-1, Anda masih dapat melihat buffer jika Anda menggulir ke atas
João Pimentel Ferreira
15

Anda dapat menggunakan resetperintah, yang akan mengatur ulang pengaturan terminal.

enzotib
sumber
15

Saya tahu Anda berada di terminal gnome, tapi saya pikir saya akan menjawab dengan tip untuk orang lain yang mungkin (seperti saya) di Mac:

Jika Anda menggunakan Terminal.appatau iTerm.appkemudian Control+Lakan menggulir ke atas sehingga terminal terlihat kosong, tetapi Cmd+Ksebenarnya akan mengatur ulang terminal / hapus scroll-kembali.

Atau, jika Anda dapat mengatur preferensi keyboard untuk terminal Anda, Anda mungkin dapat menetapkan sesuatu seperti Ctrl+Kinput echo -e \\033cseperti yang disebutkan di atas.

cwd
sumber
2
Cmd+Ksemua yang saya inginkan. ty
Gaurav Gandhi
9

Jawaban Anthon bekerja di KDE Konsole, tetapi tidak urxvt. Di urxvt, saya telah menggunakan reset selama beberapa tahun untuk menghapus scrollback (bersama dengan semua hal lain yang dilakukannya), dan tidak puas bahwa itu tidak berfungsi di Konsole. Jadi sekarang untuk Linux saya punya alias baru:

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

Tetapi tidak berfungsi pada OS X.

tput reset tidak berfungsi dalam konteks apa pun AFAICT.

Di KDE Konsole, ctrl- shift- kmembersihkan scrollback (termasuk prompt shell saat ini, jadi itu benar-benar kosong). Di iTerm atau terminal Apple pada OS X, cmd- shift- kjuga menghapus scrollback. Untuk menambahkan fitur ini ke urxvt, tambahkan ini ke ~ / .Xresources:

urxvt*keysym.C-S-K: command:\033c
ecloud
sumber
Jawaban ini adalah jawaban yang akan disukai siapa saja yang menggunakan Linux Bash jika mereka mengharapkan hasil yang sama seperti yang akan mereka terima pada Mac dengan menekan perintah + K. Saya melanjutkan dan mengubahnya menjadi perintah mandiri dengan menambahkan fungsi berikut ke bawah dari /etc/bash.bashrc (lalu logout dari server, masuk kembali dan itu akan bekerja melalui perintah allclear): allclear(){`echo" Menghapus terminal dan scrollback ... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }` Edit: Tidak dapat memformat agar berfungsi. Jika ada yang bisa mengedit ini sehingga bisa dibaca, saya akan sangat menghargainya.
KLaw
3

Saya menemukan ini di internet bertahun-tahun yang lalu, dan bekerja dengan baik untuk saya. Ini benar-benar membersihkan terminal tanpa riwayat gulir.

echo -e "\e[3J"
kanon
sumber
2

Saya memetakan F12untuk menghapus layar di masing-masing cangkang berikut: bash , csh dan fish shell . Perintah saya berbeda dari semua yang sebelumnya karena mempertahankan apa pun yang sudah Anda ketikkan pada baris saat ini.
(Catatan: semua konfigurasi di bawah ini tergantung terminal, tapi saya harap mereka akan bekerja di mana saja)

pesta

Buka file ~/.inputrcdan masukkan baris berikut:

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

Agar ikatan kunci baru tersedia, buka terminal baru atau ketik Ctrl+ Xlalu Ctrl+ Runtuk memuat ulang file .inputrc di terminal saat ini.

Penjelasan
File ~ / .inputrc mengontrol binding kunci terminal bash.

Tentang garis:

  1. Bagian pertama dari garis "\e[24~",, memetakan kunci F12.
  2. The C-k( Ctrl+ X) mengosongkan kill-ring (memori bash-and-past bash).
  3. Ruang menghindari bunyi bip pada perintah berikutnya.
  4. The C-u( Ctrl+ U) mengirimkan baris saat ini ke cincin bunuh, dan menghapusnya.
  5. The echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nmengirimkan dua perintah dikelompokkan terminal. Mereka dipisahkan oleh ;dan diakhiri oleh \n.
    • The echo -ne '\\ec\\e[3J'membersihkan layar.
    • The history -d $((HISTCMD-1))menghindari kedua perintah masuk dalam sejarah.
  6. The C-y( Ctrl+ Y) pasta membunuh-cincin disimpan oleh C-uperintah.
  7. The C-?( Ctrl+ ?) setara dengan Backspacedan menghilangkan ruang dimasukkan pada langkah 3 di atas.

Referensi:

csh

Ketikkan perintah di bawah.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Itu juga dapat dimasukkan dalam .cshrcfile Anda untuk memuat kunci yang mengikat ke setiap terminal baru.
(Ya, itu jauh lebih sederhana daripada di bash)

kulit ikan

Ketikkan perintah di bawah.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Anda dapat mengedit dan menyimpan fungsi fish_user_key_bindingsuntuk memuat ikatan kunci ke setiap terminal baru.
(Ya, itu jauh lebih sederhana daripada di bash)

Akira Cleber Nakandakare
sumber
2

[Ubuntu 16.04]

File .bash_history dibuat di direktori home pengguna setelah terminal ditutup

Ini berguna, tetapi Anda bisa menghapusnya jika Anda mau .. Namun demikian itu akan dibuat setiap kali Anda selesai menggunakan terminal.

Anda dapat menghapusnya secara manual dari:

  • browser file Anda.

  • terminal: ingat bahwa file .bash_history baru akan dibuat ketika Anda menutup terminal (berdasarkan pada konfigurasi default-nya).

Atau Anda dapat memanggil fungsi kustom jika Anda menyimpan fungsionalitas yang Anda perlukan ke dalam file yang ditautkan dari bashrc .. Anda dapat mengedit bashrc itu sendiri jika Anda suka meletakkan kode Anda di sana, tetapi contoh-contoh selanjutnya berada di file terpisah

Jujur ini tidak berguna bagi saya tetapi jika Anda ingin menghapus sejarah perintah sebelum keluar Anda bisa melakukan ini:

.bash_custom # ini adalah file khusus saya

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

kemudian di bagian bawah tambahkan nama dan path file saya
.bashrc # ini adalah file konfigurasi untuk bash (saya pikir)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

dan itu semua.

TETAPI, untuk melakukan apa yang Anda inginkan, Anda hanya perlu fungsi ini di file khusus Anda dan tautkan:

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

Atau cukup masukkan fungsi dalam .bashrc jika Anda mau tetapi dengan cara itu Anda mungkin memerlukan pernyataan ekspor setelah fungsi tersebut. Saya tidak yakin dan jika file yang diperbarui mungkin kehilangan fungsi Anda .. Saya juga tidak yakin tentang itu: D.
Ingat Anda harus memulai kembali terminal saat mengedit .bashrc atau file 'custom' Anda.

Federico Gallo
sumber
1

Bagi saya, menggunakan Putty terhadap CentOS 7, menghapus hanya meninggalkan perintah yang jelas di scrollback, tetapi menjalankan "clear && clear", dua contoh dari perintah yang jelas pada saat yang sama, sepenuhnya menghapus scrollback dan membuat saya tanpa scrollbar. Coba itu. Ini adalah solusi yang aneh tetapi tidak satupun dari ini yang membersihkan scrollback secara efektif, dan ini berhasil.

Zoltan Shapiro
sumber
0

Ditambahkan untuk ~/.inputrcmengikat kliring lengkap ke F12:

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

Di Fedora 30, menghapus riwayat dilakukan dengan menghapus file $ HOME / .bash_history. Cara termudah untuk menghapus file riwayat terminal melalui keyboard adalah:

  • Tekan Alt+ F4untuk menutup setiap jendela Terminal GNOME, bersepeda melalui windows melalui Alt+ Tabatau Alt+ Shift+ Tabsesuai kebutuhan. (Semua jendela terminal harus ditutup karena file .bash_history dibuat atau diperbarui ketika ditutup.)
  • Tekan Alt+ F2.
  • Ketik nautilusdan tekan Entertombol untuk membuka aplikasi File (GNOME) (yang sebelumnya dikenal sebagai Nautilus).
  • Tekan Ctrl+ Hjika perlu untuk menampilkan file tersembunyi.
  • Ketik .bash_history(yang akan muncul di bilah pencarian jika diketik segera setelah jendela dibuka; jika tidak, bilah pencarian dapat diakses melalui Ctrl+ L).
  • Tekan tombol panah bawah untuk memilih file, yang seharusnya menjadi satu-satunya hasil pencarian.
  • Tekan Shift+ Deleteuntuk menghapus file secara permanen. (Jika Anda menggunakan Deletekunci yang tidak dimodifikasi , file .bash_history akan tetap dapat diakses melalui folder Trash.)
Patrick Dark
sumber
-2
cat /dev/null > ~/.bash_history && history -c && exit
Pesta
sumber
Paling tidak yang bisa Anda lakukan adalah menjelaskan dan memformat jawaban Anda.
Paradox
(1) Tidak jelas bahwa OP ingin menghapus memori shell (histori) dari perintah sebelumnya (pertanyaannya adalah tentang terminal ). Anda tidak dapat melihatnya, tetapi history -ctelah disajikan dalam dua jawaban sebelumnya, dan itu dihapus karena bukan jawaban yang benar untuk pertanyaan itu. (2) Ketika menutup jendela terminal akan (mungkin) menghapus memori terminal dari perintah sebelumnya, jauh dari jelas bahwa OP ingin melakukan itu. ... Dan PS exitPerintah tunggal tidak dijamin untuk menutup jendela terminal.
G-Man Mengatakan 'Reinstate Monica'