Czy istnieje sposób na tymczasowe zawieszenie śledzenia historii w bash, aby wejść w tryb „incognito”? Wchodzę do mojego terminalu rzeczy, których nie chcę nagrywać, poufne informacje finansowe.
Czy istnieje sposób na tymczasowe zawieszenie śledzenia historii w bash, aby wejść w tryb „incognito”? Wchodzę do mojego terminalu rzeczy, których nie chcę nagrywać, poufne informacje finansowe.
Odpowiedzi:
To powinno być to, czego szukasz:
unset HISTFILE
man bash
Jeśli HISTFILE nie jest ustawiony lub plik historii jest nie do zapisania, historia nie jest zapisywana.
Alternatywnie, jeśli chcesz go wyłączyć, a następnie włączyć ponownie, może być łatwiejsze w użyciu set
:
set +o history
set -o history
set +o history
i set -o history
przełączać się tam iz powrotem, gdy będę robił tajne rzeczy;)
unset HISTFILE
nie działa. set -/+o history
działa jak marzenie! dzięki
Używając bash, ustaw HISTCONTROL="ignorespace"
i poprzedzaj spacją dowolne polecenie, którego nie chcesz zapisywać w historii. W przypadku zapomnienia o podjęciu jakichkolwiek działań można również history -d <number>
usunąć konkretny wpis lub history -c
wyczyścić całą historię poleceń.
Upewnij się, że HISTCONTROL
zawiera ignorespace
. Prawdopodobnie będziesz chciał dodać HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
lub coś) do swojego ~/.bashrc
. Następnie dowolny wiersz polecenia rozpoczynający się spacją jest pomijany w historii.
Inną możliwością jest rozpoczęcie nowej sesji bash, która nie zapisuje historii.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Jeśli chcesz uniknąć przechowywania kilku poleceń, a nadal chcesz użyć strzałki w górę, aby uzyskać dostęp do poprzednich poleceń, użyj:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Istnieją cztery sposoby (poziomy) kontrolowania sposobu przechowywania poleceń.
Pierwszym i najprostszym jest użycie ignorespace
(lub zignorowanie obu):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Umożliwi to użycie spacji przed poleceniami, których chcesz uniknąć zapisywania na liście pamięci history
. W konsekwencji, ponieważ w pamięci nie ma zapisanego polecenia, które można by wysłać do pliku, uniknie także wysłania jednego polecenia do pliku wymienionego w $HISFILE
.
Unikaj nagrywania poleceń do pliku w $HISTFILE
:
$ unset HISTFILE
Jeśli nie jest ustawiony, historia poleceń nie jest zapisywana po wyjściu powłoki.
Null HISTFILE=''
i / lub ustawione na HISTFILE=/dev/null
działanie z tym samym efektem. Dowiedz się, że polecenia są nadal zapisywane na liście pamięci, wypróbuj history
polecenie lub strzałkę w górę.
Ostrzeżenie: jeśli HISTFILE zostanie zresetowany przed istnieniem powłoki, wszystko, co zostało zapisane w pamięci, może zostać zapisane w pliku.
Unikaj zapisywania nowych poleceń na liście historii w pamięci. Ponieważ nie ma go w pamięci, nie można go zapisać do pliku.
$ shopt -ou history # or set +o history
Ponownie włącz za pomocą shopt -os history
(lub set -o history
)
Usuń wszystkie polecenia z listy historii w pamięci:
$ HISTSIZE=0
Wszystkie polecenia są usuwane (z pamięci) i dlatego nic nie może być zapisane do pliku, dopóki zmienna nie zostanie ponownie ustawiona na pewną prawidłową wartość liczbową.
man history
nie będzie go wyciąć dla większości z nas.
HISTIGNORE
, której subsumes
funkcji HISTCONTROL
.
LESS=+'/^ *HISTI' man bash
(czy to nie są „strony podręcznika”?). @NathanBasanese
Jest jeden prosty sposób na wyłączenie historii, więc polecenia nie będą przechowywane w .bash_history
pliku.
Musisz umieścić spację lub tabulator przed dowolnym poleceniem, aby polecenie nie zostało zapisane w historii. Na przykład:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
pwd
Komenda nie dostanie sklep w historii, ponieważ ma spacje z przodu.
export HISTFILE=/dev/null
To mój sposób na goto. Na wypadek, gdyby rozbrojony HISTORY / HISTFILE / HISTCONTROL itp. Nie działa, eksportowanie go do / dev / null zawsze działało dla mnie.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
jest sprawdzana tylko po wyjściu basha, więc pierwsza metoda nie działa tak jak jest (jeśli przywrócisz wartość, polecenie zostanie zapisane).set +o history
działa zgodnie z zaleceniami.