Geçmişinizde tek bir komut kaydetmemek için komuttan önce bir boşluk ( ␣
burada işaretli olan ) ile devam edin:
$ 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
Bu davranış, ~/.bashrc
dosyanızda, yani şu satırda ayarlanır :
HISTCONTROL=ignoreboth
man bash
diyor:
HISTCONTROL
Komutların geçmiş listesine nasıl kaydedileceğini kontrol eden iki nokta üst üste işaretli değerler listesi. Değerler listesi yoksayma içeriyorsa
, boşluk karakteriyle başlayan satırlar geçmiş listesine kaydedilmez . Yoksayılanların değeri , önceki geçmiş girdisiyle eşleşen satırların kaydedilmemesine neden olur. Değeri
ignoreboth'un için kısaltmadır ignorespace ve ignoredups .
ignoredups
bu arada history | tail -n2
yukarıdaki testte tarihte sadece bir kez görünmesinin nedeni .
Bir terminalin geçmişi RAM'e kaydedilir ~/.bash_history
ve terminal kapatılır kapatılmaz temizlenir . Belirli bir girişi sizden silmek ~/.bash_history
istiyorsanız, bunu aşağıdakilerle yapabilirsiniz 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
Sonuncusu ise varsayılan sınırlayıcı değişti /
için _
aslında bu eşittir, bu arama terimi içine kullanılan gibi sed -i '/\/path\//d' .bash_history
. Komut çıkışları Eklemek silmek istediğiniz tek satır halinde -i
seçeneği ve değişimi !d
için d
silme işlemini gerçekleştirmek için:
# 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