Bagaimana cara menghapus Riwayat terminal?

93

Saya menggunakan Linux Mint 17.1 Rebecca selama sekitar 2 hari dan secara tidak sengaja mengetikkan kata sandi saya ke terminal yang sekarang ditampilkan dalam daftar sejarah perintah yang sebelumnya saya ketikkan.

Saya ingin menghapus riwayat terminal sepenuhnya. Saya telah mencoba menggunakan perintah berikut di terminal yang saya pikir akan menghapus sejarah selamanya tetapi mereka tidak:

history -c
reset
tput reset

Perintah di atas "akan" menghapus histori dari terminal tetapi ketika saya keluar dan memunculkan yang baru semua histori saya sebelumnya masih ada dan semua bisa terdaftar lagi menggunakan perintah - history dan juga dengan menekan panah atas pada keyboard saya . Saya tidak ingin ini terjadi sampai saya benar-benar membersihkan sejarah saya, maka saya ingin terus menggunakannya.

Bagaimana saya bisa menghapus riwayat terminal saya sepenuhnya - selamanya dan mulai segar?

Harap Dicatat: Saya tidak ingin keluar dari terminal tanpa menyimpan riwayat, cukup hapus selamanya dalam contoh yang satu ini.

Shambhala
sumber
1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan
3
@jasonwryan Itu saja tidak akan menyelesaikan masalah karena perintah sed akan berakhir dalam sejarah shell.
Gilles
1
Saya mencoba menggunakan kode dari @jasonwryan tapi saya mendapat: sed: -e ekspresi # 1, char 0: tidak ada ekspresi reguler sebelumnya yang saya pikir saya tahu mengapa dan itu membuat saya menemukan ini dari pencarian dan beberapa mengacaukan: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala
1
@Gilles: Anda benar: seharusnya ada ruang di depan perintah ...
jasonwryan

Jawaban:

145

resetatau tput resethanya melakukan hal-hal ke terminal. Sejarah sepenuhnya dikelola oleh shell, yang tetap tidak terpengaruh.

history -cmembersihkan riwayat Anda di shell saat ini. Itu cukup (tetapi berlebihan) jika Anda baru saja mengetik kata sandi dan belum keluar dari shell itu atau menyimpan riwayatnya secara eksplisit.

Saat Anda keluar dari bash, histori disimpan ke file histori, yang secara default ada .bash_historydi direktori home Anda. Lebih tepatnya, riwayat yang dibuat selama sesi saat ini ditambahkan ke file; entri yang sudah ada tidak terpengaruh. Untuk menimpa file histori dengan histori shell saat ini, jalankan history -w.

Alih-alih menghapus semua entri riwayat Anda, Anda dapat membuka .bash_historydi editor dan menghapus baris yang tidak ingin Anda pertahankan. Anda juga dapat melakukannya di dalam bash, kurang nyaman, dengan menggunakan historyuntuk menampilkan semua entri, lalu history -dmenghapus entri yang tidak Anda inginkan, dan akhirnya history -wmenyimpan.

Perhatikan bahwa bahkan setelah Anda mengedit file histori, kata sandi Anda mungkin masih ada di suatu tempat di disk dari versi file yang lebih lama. Itu tidak dapat diambil melalui sistem file lagi, tetapi mungkin masih mungkin (tetapi mungkin tidak mudah) untuk menemukannya dengan mengakses disk secara langsung. Jika Anda menggunakan kata sandi ini di tempat lain dan disk Anda dicuri (atau seseorang mendapatkan akses ke disk), ini bisa menjadi masalah.

Gilles
sumber
1
Saya suka jawaban Anda dan akan menerima karena Anda mengatakan kepada saya beberapa hal yang saya tidak tahu yang sangat berguna. Saya juga akan mengubah kata sandi saya!
Shambhala
Jenis pertama historyuntuk memeriksa konten log riwayat dan nomor baris yang ingin Anda hapus, seandainya Anda ingin menghapus nomor baris 1000 dalam log riwayat, laluhistory -d 1000
Claude COULOMBE
Jika saya memodifikasi file .bash_history secara langsung, perintah histori masih menampilkan perintah seperti sebelum modifikasi, sampai saya logout / login.
Benitok
35

Saya telah mencoba sejarah -c tetapi sejarah kembali setelah kami keluar dan membuka kembali. Ini membantu saya.

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

Ini menghapus histori yang disimpan dalam file histori dan juga histori pada sesi saat ini (sehingga tidak disimpan ke file saat bashkeluar). Kemudian keluar dari shell. Sesi shell berikutnya tidak memiliki riwayat.

athul
sumber
18

Alih-alih menghapus semua entri riwayat Anda, ketik perintah ini di terminal Anda:

  1. history -c (untuk menghapus riwayat)
  2. history -w (simpan riwayat)
pengguna171143
sumber
Ini tidak akan cukup dengan zsh jika inc_append_historyatau share_historyopsi diatur.
Saga
5

Karena ada masalah keamanan di sini, Anda harus mempertimbangkan menghapus file histori dengan aman.

$ shred -u ~/.bash_history && touch ~/.bash_history
C0D3R3D
sumber
3

Sebagai orang baru dihadapkan dengan masalah yang sama saya menggunakan cara yang agak brutal menghapus dan menciptakan kembali file sejarah: -

rm .bash_history
touch .bash_history

Itu bekerja untuk saya tanpa menimbulkan efek samping yang tidak menyenangkan yang saya sadari.

Joe berbulu
sumber
3

Tipe: history -c; rm ~/.bash_history

history -cmembersihkan riwayat sesi Anda saat ini, rm ~/.bash_historymenghapus riwayat jangka panjang Anda, jadi history -c; rm ~/.bash_historyhapus keduanya.

ANTHONI
sumber
Penjelasan dapat membantu OP memahami dengan lebih baik.
Mongrel