Jawaban:
Jika Anda ingin menjalankan perintah tanpa menyimpannya dalam sejarah, tambahkan itu dengan ruang ekstra
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
Untuk ini bekerja Anda perlu baik ignorespaceatau ignorebothdi HISTCONTROL. Misalnya, jalankan
HISTCONTROL=ignorespace
Untuk membuat pengaturan ini terus-menerus, letakkan di Anda .bashrc.
Jika Anda sudah menjalankan perintah, dan ingin menghapusnya dari histori, gunakan dulu
history
untuk menampilkan daftar perintah dalam riwayat Anda. Temukan angka di sebelah nomor yang ingin Anda hapus (mis. 1234) dan jalankan
history -d 1234
Selain itu, jika baris yang ingin Anda hapus telah ditulis ke $ HISTFILE Anda (yang biasanya terjadi ketika Anda mengakhiri sesi secara default), Anda perlu menulis kembali ke $ HISTFILE, atau baris tersebut akan muncul kembali ketika Anda membuka yang baru sidang:
history -w
history -a, dalam hal ini sudah ditulis ke file sejarah, daripada keluar di bawah konfigurasi normal. Khususnya: mywiki.wooledge.org/BashFAQ/088
history -w. Kalau tidak, saat Anda keluar, baris yang dihapus masih ada!
history -wsetelah history -d {num}itu persis apa yang saya butuhkan - bahwa berita gembira kritis harus ditambahkan ke jawabannya, jika tidak pengguna mungkin berpikir temp delete dari shell saat ini sebenarnya permanen.
history -wdiperlukan untuk entri yang sudah ditulis ke .bash_historyfile. Cara mereproduksi (mis. Pada CentOS 7 dengan konfigurasi stok): 1. login 2. masukkan perintah echo foo3. logout 4. login lagi 5. hapus entri untuk echo foo6. logout 7. login lagi: entri masih ada. Bergantung pada bagaimana Anda mengonfigurasi riwayat bash Anda, mungkin Anda dapat mereproduksi masalah ini dengan cara lain - yaitu jika Anda memprovokasi penulisan riwayat sebelum keluar.
Untuk menghapus semua riwayat Anda, gunakan
history -cUntuk menghapus satu baris, gunakan
history -d linenumberSaya memiliki ini di saya ~/.bashrc, yang membuat perintah $ forgetmenghapus perintah sebelumnya dari sejarah
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
history -d $( history | tail -n 1 | cut -f 1 -d " " )lebih sederhana?
history | tail -n1adalah historyperintah itu sendiri, jadi menghapus nomor itu mendapat entri yang salah. Namun, history -d $( history | awk 'END{print $1-1}' )gabungkan garis pilih, pilih bidang, dan pengurangan.
Jika Anda ingin melupakan seluruh sesi bash, Anda dapat killmelakukan proses bash saat ini. Karena variabel tersebut $$menahan pidshell saat ini, Anda dapat melakukan:
kill -9 $$
Anda perlu menulis perubahan setelah membersihkan riwayat. Dan jika Anda tidak ingin memiliki perintah penghapusan riwayat dalam riwayat Anda maka Anda perlu menjalankan perintah seperti itu:
history -c && history -w && logout
Semoga berhasil.
Adding another point suppose if you want to delete a range of history lines
You can use below script.
Below example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done