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 ~/.bashrc
file 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 .
ignoredups
omong-omong adalah alasan mengapa history | tail -n2
hanya muncul sekali dalam sejarah dalam tes di atas.
Riwayat terminal disimpan dalam RAM dan ~/.bash_history
segera dihapus setelah Anda menutup terminal. Jika Anda ingin menghapus entri tertentu dari Anda, ~/.bash_history
Anda 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 -i
pilihan dan perubahan !d
untuk d
melakukan 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