Saya menggunakan kode berikut di .bash_profile saya untuk memfilter dan menduplikat riwayat bash saya:
shopt -s histappend
HISTSIZE=100000
HISTFILESIZE=100000
HISTCONTROL=ignoredups:erasedups
PROMPT_COMMAND="history -a;history -c;history -r;$PROMPT_COMMAND"
Ini bekerja sangat baik, namun efek samping berikut dihasilkan:
Katakanlah saya memiliki dua terminal / tab terbuka:
- Tab ke-1: folder:
~
, perintah terakhir dijalankan:wget big_file...
(atau apapun yang panjang) - Tab ke-2: folder: beberapa folder temp acak, jalankan perintah terakhir:
rm -rf *
Sekarang jika saya pergi dari tab ke-2 dan ke-1, dan tekan tombol ATAS, itu menjalankan kembali perintah terakhir, seperti semuanya OK
Sekarang sampai pada bit yang berbahaya: jika saya menekan UP lagi, itu akan menyisipkan rm -rf *
dan jika saya tidak menyadarinya saat saya baru saja menghapus semua data saya.
Dapatkah Anda merekomendasikan saya pengaturan .bash_profile untuk histori yang melakukan de-duplikasi / penyaringan tetapi tidak memungkinkan hal-hal seperti itu terjadi?
Jawaban:
Kamu bisa memakai
HISTIGNORE
untuk mengabaikan yang Anda anggap berbahaya.sumber