Czy istnieje jakiś sposób, aby wykluczyć takie polecenia jak rm -rf
, svn revert
od bycia coraz przechowywane w bash historii? Właściwie to przez pomyłkę wydałem je wiele razy, chociaż nie mam zamiaru tego robić, tylko dlatego, że robię rzeczy szybko i to się stało. W rezultacie straciłem dużo pracy, którą wykonałem do tej pory.
bash
command-history
Ravi Gupta
źródło
źródło
Odpowiedzi:
Możesz chcieć
$HISTIGNORE
: „Rozdzielona dwukropkami lista wzorców używanych do decydowania, które wiersze poleceń powinny zostać zapisane na liście historii”. Ta linia w twoim ~ / .bashrc powinna wykonać zadanie:Możesz także dodać spację na początku polecenia, aby wykluczyć go z historii. Działa tak długo, jak
$HISTCONTROL
zawieraignorespace
lubignoreboth
, co jest domyślne w każdej dystrybucji, której użyłem.źródło
y
, po tym wszystkimcp
(alias docp -i
) przeszło. Więc aliasowałemy
jakoalias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'
... AleHISTIGNORE
to lepsza metoda, jak się wydaje. :) Dzięki.export HISTCONTROL="ignorespace"
do swojego,~/.bashrc
aby zignorować polecenia zaczynające się od spacji.Choć nieco inaczej niż w pytaniu OP, kiedy celowo nie chcę, aby polecenie zostało zapisane w historii basha, poprzedzam je spacją. Działa w Ubuntu i jego wariantach, nie jestem pewien, czy działa na wszystkich systemach.
źródło
$HISTCONTROL
(patrz moja odpowiedź).Zazwyczaj zabijam instancję bash, gdy robię rzeczy, których nie chcę w historii.
$$ reprezentuje bieżący proces - bash po uruchomieniu go z powłoki. Możesz użyć $ BASHPID, ale to więcej pisania :-)
źródło
HISTFILE=/dev/null
jest lepszą opcją.HISTFILE=
działa zarówno w bash, jak i ksh.unset HISTFILE