Bagaimana menghapus riwayat bash sepenuhnya?

254

Saya ingin menghapus semua perintah sebelumnya dari riwayat server saya. Saya menggunakan history -cdan tampaknya semua hal dihapus tetapi ketika saya ssh ke server, semua perintah masih ada.

Bagaimana saya bisa menghapusnya secara permanen?

hd.
sumber

Jawaban:

332

File tersebut ~/.bash_historymenyimpan histori.

Untuk menghapus riwayat bash sepenuhnya di server, buka terminal dan ketik

cat /dev/null > ~/.bash_history

Cara alternatif lainnya adalah untuk menghubungkan ~/.bash_historyke/dev/null

Namun,

Satu efek samping yang mengganggu adalah bahwa entri riwayat memiliki salinan di memori dan akan kembali ke file ketika Anda logout .

Untuk mengatasinya, gunakan perintah berikut (berfungsi untuk saya):

cat /dev/null > ~/.bash_history && history -c && exit
devav2
sumber
17
Anda juga dapat menempatkan perintah di atas di .bashrc & .bash_logout. apa artinya ketika Anda login, Anda akan memiliki riwayat yang jelas & ketika Anda keluar riwayat Anda akan dihapus
Qasim
26
Mengapa Anda perlu / dev / null di sana? Tidak > ~/.bash_hstorycukup?
konfigurator
4
ya itu sudah cukup!
fromnaboo
3
Saya mencoba melakukannya pada kotak raspberry ketika terhubung melalui SSH. Saya menambahkan perintah di atas (cat / dev / null> ~ / .bash_history && history -c && keluar) ke keduanya .bashrc & .bash_logout seperti yang disarankan oleh @Qasim. Sekarang begitu saya terhubung melalui SSH host jarak jauh menutup koneksi (setelah mencetak motd). Bantuan: /
Lanjutan
14
Pergi untuk menunjukkan apa yang terjadi ketika Anda membabi buta melakukan sesuatu tanpa membaca dengan benar dan tanpa memahami pemrosesan dan aliran data. Ini juga menunjukkan jebakan komunikasi yang buruk. Apa yang devav2 lakukan adalah menjalankannya satu kali, dan apa yang seharusnya ditulis oleh Qasim adalah menghapus perintah keluar sebelum menambahkannya dalam skrip login.
Sri
142

Apa yang harus dilakukan:

Di setiap bash shell terbuka (Anda mungkin memiliki beberapa terminal terbuka):

history -c
history -w

Mengapa: Seperti disebutkan di atas, history -cmengosongkan file ~/.bash_history. Penting untuk dicatat bahwa bash shell tidak segera mem-flush history ke file bash_history. Jadi, penting untuk (1) menyiram histori ke file, dan (2) menghapus histori, di semua terminal . Itulah yang dilakukan perintah di atas.

Referensi: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-out/for/

callpraths
sumber
3
Sebenarnya, sebaliknya bekerja untuk saya.
kristianp
24
Dalam banyak kasus, Anda dapat menggabungkan kedua perintah ini bersama-sama:history -cw
Elliot
2
Untuk beberapa alasan ini tidak berfungsi pada Ubuntu 14.04, mungkin yang lain. Seharusnya tapi tidak. Jika Anda mengeluarkan perintah "history -cw" Anda dapat mengonfirmasi dengan panah ke atas bahwa riwayat tidak ada lagi, tetapi jika Anda memulai jendela terminal lain (di desktop Persatuan) dengan shift + klik pada ikon terminal (saya memilikinya disematkan di peluncur) sejarah perintah kembali, tidak peduli berapa kali Anda melakukan "riwayat -cw". "cat / dev / null> ~ / .bash_history" adalah satu-satunya cara yang bekerja untuk saya.
Hatoru Hansou
Meskipun saya bukan Ubantu, berfungsi baik untuk bash shell saya di OSX.
Scott Biggs
3
Ini adalah sejarah -c dan kemudian sejarah -w, pertama-tama Anda menghapus riwayat lalu menulis perubahan. Ini mudah dikonfirmasikan dengan menutup terminal dan membukanya lagi, dengan -w pertama perintah ada di sana lagi, dengan -w sejarah terakhir secara efektif dihapus.
Hatoru Hansou
56

jalankan perintah berikut untuk menghapus riwayat selamanya

history -c && history -w

semoga berhasil!

Edwin Jose
sumber
3
Jauh lebih baik daripada jawaban yang diterima. ;)
Chiramisu
Jawaban ini akan lebih membantu jika menjelaskan apa yang dilakukan oleh flag-flag ini (dan karenanya mengapa / kapan mereka menggunakan perintah yang benar).
LarsH
20

Ada satu lagi yang lebih sederhana: berjalan history -cdi terminal prompt dan hilang semua entri dalam bash_historyfile.

Peter Eijlander
sumber
Tidak, bukan. Keluar, masuk, panah memberi saya segalanya. Anda membutuhkan "history -w" juga.
stolsvik
1
Jika Anda membaca pertanyaan OP, Anda akan tahu bahwa menggunakan history -cadalah metode yang tepat yang mengarah ke pertanyaan ini.
J.Money
10

Cara lain untuk melakukan ini adalah menghapus ~/.bash_historyfile dengan menggunakan rm ~/.bash_historyperintah. Ketika Anda login lain kali, .bash_historyfile akan dibuat secara otomatis.

Anwar
sumber
4
Setidaknya pada beberapa OS ~ / .bash_history ditulis ke disk ketika Anda logout - Tidak yakin tentang * buntus.
d -_- b
7

Hapus riwayat shell saat ini:

history -c

Ketika Anda logout, histori shell Anda saat ini ditambahkan ke ~ / .bash_history, yang merupakan cache dari sejarah shell sebelumnya, ke jumlah maksimum (lihat HISTFILESIZE di "man bash").

Jika Anda ingin menghapus histori sama sekali, maka pada dasarnya Anda harus mengosongkan ~ / .bash_history yang disarankan oleh banyak entri di atas. Seperti:

history -c && history -w

Ini menghapus histori shell saat ini dan kemudian memaksa histori shell saat ini (kosong) untuk menimpa ~ / .bash_history .... atau lebih tepatnya, itu memaksa untuk menimpa HISTFILE (yang defaultnya adalah ~ / .bash_history).

Semoga ini membantu.

mobiGeek
sumber
4
Jawaban Anda akurat, tetapi pertanyaannya adalah dua tahun, telah menerima jawaban, dan termasuk jawaban yang sama yang Anda berikan.
Charles Green
6
rm ~/.bash_history; history -c; logout

Sekarang login kembali dan saksikan bahwa panah-up Anda tidak memberi Anda apa-apa.

stolsvik
sumber
1
@KasiyA Ini tentang server dan sesi ssh, jadi tidak perlu mengedit ...
Radu Rădeanu
0

Coba yang ini

edit Anda .profiledan tambahkan baris di bawah ini di akhir file

rm -f .bash_history

dengan cara ini, setiap kali Anda masuk, itu akan menghapus file .bash_history Anda secara otomatis untuk Anda. Menambahkan opsi hapus -r rekursif tampaknya berbahaya dan tidak diperlukan.

IT Campuran Prof
sumber