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 ignorespace
atau ignoreboth
di 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 -w
setelah 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 -w
diperlukan untuk entri yang sudah ditulis ke .bash_history
file. Cara mereproduksi (mis. Pada CentOS 7 dengan konfigurasi stok): 1. login 2. masukkan perintah echo foo
3. logout 4. login lagi 5. hapus entri untuk echo foo
6. 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 -c
Untuk menghapus satu baris, gunakan
history -d linenumber
Saya memiliki ini di saya ~/.bashrc
, yang membuat perintah $ forget
menghapus 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 -n1
adalah history
perintah 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 kill
melakukan proses bash saat ini. Karena variabel tersebut $$
menahan pid
shell 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