Untuk tidak menyimpan satu perintah dalam riwayat Anda, cukup awali dengan spasi (ditandai dengan di ␣sini):
$ echo test
test
$ history | tail -n2
3431 echo test
3432 history | tail -n2
$ ␣echo test2
test2
$ history | tail -n2
3431 echo test
3432 history | tail -n2
Perilaku ini diatur dalam ~/.bashrcfile Anda , yaitu di baris ini:
HISTCONTROL=ignoreboth
man bash mengatakan:
HISTCONTROL
Daftar nilai-nilai yang dipisahkan oleh titik dua yang mengendalikan bagaimana perintah disimpan pada daftar sejarah. Jika daftar nilai termasuk
abaikan , garis yang dimulai dengan karakter spasi tidak disimpan dalam daftar riwayat . Nilai diabaikannya menyebabkan garis yang cocok dengan entri riwayat sebelumnya tidak disimpan. Nilai
ignoreboth adalah singkatan untuk ignorespace dan ignoredups .
ignoredupsomong-omong adalah alasan mengapa history | tail -n2hanya muncul sekali dalam sejarah dalam tes di atas.
Riwayat terminal disimpan dalam RAM dan ~/.bash_historysegera dihapus setelah Anda menutup terminal. Jika Anda ingin menghapus entri tertentu dari Anda, ~/.bash_historyAnda dapat melakukannya dengan sed:
# print every line…
sed '/^exit$/!d' .bash_history # … which is just “exit”
sed '/^history/!d' .bash_history # … beginning with “history”
sed '/>>log$/!d' .bash_history # … ending with “>>log”
sed '\_/path/_!d' .bash_history # … containing “/path/” anywhere
Dalam yang terakhir saya mengubah pembatas standar /untuk _seperti itu digunakan dalam istilah pencarian, sebenarnya ini sama dengan sed -i '/\/path\//d' .bash_history. Jika output perintah hanya baris yang ingin Anda hapus menambahkan -ipilihan dan perubahan !duntuk dmelakukan penghapusan:
# delete every line…
sed -i '/^exit$/d' .bash_history # … which is just “exit”
sed -i '/^history/d' .bash_history # … beginning with “history”
sed -i '/>>log$/d' .bash_history # … ending with “>>log”
sed -i '\_/path/_d' .bash_history # … containing “/path/” anywhere