Saya sangat menikmati menggunakan control+r
secara rekursif mencari riwayat perintah saya. Saya telah menemukan beberapa opsi bagus yang ingin saya gunakan:
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
Satu-satunya masalah bagi saya adalah bahwa erasedups
hanya menghapus duplikat berurutan - sehingga dengan serangkaian perintah ini:
ls
cd ~
ls
The ls
perintah akan benar-benar disimpan dua kali. Saya sudah berpikir tentang menjalankan w / cron secara berkala:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Ini akan mencapai penghapusan duplikat, tetapi sayangnya pesanan tidak akan dipertahankan. Jika saya tidak sort
file terlebih dahulu saya tidak percaya uniq
bisa berfungsi dengan baik.
Bagaimana saya bisa menghapus duplikat di .bash_history saya, menjaga ketertiban?
Kredit tambahan:
Apakah ada masalah dengan menimpa .bash_history
file melalui skrip? Sebagai contoh, jika Anda menghapus file log apache saya pikir Anda perlu mengirim sinyal nohup / reset dengan kill
itu flush itu koneksi ke file. Jika demikian halnya dengan .bash_history
file, mungkin saya entah bagaimana dapat menggunakan ps
untuk memeriksa dan memastikan tidak ada sesi yang terhubung sebelum skrip penyaringan dijalankan?
history
perintah. Di mana saya harus mencari?
ignoredups
alih-aliherasedups
sebentar dan lihat bagaimana itu bekerja untuk Anda.