Gibt es eine Möglichkeit Befehle ausschließen wie rm -rf
, svn revert
davon , dass in der Bash Geschichte gespeichert zu werden ? Tatsächlich habe ich sie versehentlich mehrmals ausgegeben, obwohl ich nicht die Absicht habe, dies zu tun, nur weil ich Dinge schnell tue und es passiert ist. Dadurch geht viel Arbeit verloren, die ich bisher geleistet habe.
bash
command-history
Ravi Gupta
quelle
quelle
Antworten:
Möglicherweise möchten Sie
$HISTIGNORE
: "Eine durch Doppelpunkte getrennte Liste von Mustern, anhand derer entschieden wird, welche Befehlszeilen in der Verlaufsliste gespeichert werden sollen." Diese Zeile in Ihrem ~ / .bashrc sollte den Job erledigen:Sie können auch am Anfang eines Befehls ein Leerzeichen einfügen, um ihn aus dem Verlauf auszuschließen. Dies funktioniert, solange
$HISTCONTROL
enthältignorespace
oderignoreboth
, die standardmäßig auf jedem Distro ist ich benutzt habe.quelle
y
, nachdem allecp
(voreingenommencp -i
) vorbei kommen. Also habe ichy
als Aliasalias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'
... AberHISTIGNORE
ist eine bessere Methode, wie es aussieht. :) Vielen Dank.export HISTCONTROL="ignorespace"
Ihren~/.bashrc
Befehlen hinzufügen , um Befehle zu ignorieren, die mit Leerzeichen beginnen.Obwohl dies ein wenig anders ist als in der Frage von OP, möchte ich, dass ein Befehl nicht in der Bash-Historie gespeichert wird. Ich stelle ihnen jedoch ein Leerzeichen voran. Funktioniert in Ubuntu und seinen Varianten, nicht sicher, ob es auf allen Systemen funktioniert.
quelle
$HISTCONTROL
(siehe meine Antwort).Normalerweise töte ich meine Bash-Instanz, wenn ich Dinge getan habe, die ich in der Geschichte nicht haben will.
$$ repräsentiert den aktuellen Prozess - Bash, wenn Sie ihn über die Shell ausführen. Du kannst $ BASHPID verwenden, aber das ist mehr Tipparbeit :-)
quelle
HISTFILE=/dev/null
ist jedoch eine bessere Option.HISTFILE=
funktioniert einfach in bash und ksh.unset HISTFILE