Aby nie zapisywać ani jednego polecenia w historii, po prostu poprzedz go spacją (oznaczoną ␣tutaj):
$ 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
To zachowanie jest ustawione w twoim ~/.bashrcpliku, a mianowicie w tym wierszu:
HISTCONTROL=ignoreboth
man bash mówi:
HISTCONTROL Rozdzielona
dwukropkami lista wartości kontrolujących sposób zapisywania poleceń na liście historii. Jeśli lista wartości zawiera
ignorowanie , linie zaczynające się od spacji nie są zapisywane na liście historii . Wartość zignorowanych powoduje, że wiersze pasujące do poprzedniego wpisu historii nie są zapisywane. Wartość
ignoreboth jest skrótem ignorespace i ignoredups .
ignoredupsprzy okazji jest powodem, dla którego history | tail -n2pojawia się tylko raz w historii w powyższym teście.
Historia terminala jest zapisywana w pamięci RAM i opróżniana na twój, ~/.bash_historygdy tylko go zamkniesz. Jeśli chcesz usunąć konkretny wpis ze swojego konta, ~/.bash_historymożesz to zrobić za pomocą 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
W ostatnim zmieniłem domyślny ogranicznik /na, _ponieważ jest on używany w wyszukiwanym haśle, w rzeczywistości jest to równe sed -i '/\/path\//d' .bash_history. Jeśli polecenie wyświetla tylko linie, które chcesz usunąć, dodaj -iopcję i zmień !dna, daby wykonać usuwanie:
# 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