Ich verwende hauptsächlich Terminator und es wird normalerweise mit 3 geteilten Terminalfenstern geöffnet. Ich benutze auch Gnome Terminal aus verschiedenen Gründen.
Ich frage mich, wie der Bash-Verlauf in diesem Fall behandelt wird, da ich manchmal zuvor ausgegebene Befehle verpasse, wenn ich sie ausführehistory
In meiner Eingabeaufforderung wird beispielsweise die aktuelle Bash-Verlaufszeile ( \!
) angezeigt. Wenn ich Terminator mit drei geteilten Terminalfenstern starte, wird auf allen Terminals dieselbe Verlaufszeile (z. B. 100) angezeigt. Welche Geschichte wird gespeichert?
Wenn ich Gnome Terminal nach der Verwendung von Terminator starte, erhalte ich beim Start Zeile 100, unabhängig von allen zuvor in Terminator ausgegebenen Befehlen
command-line
bash
history
Zetah
quelle
quelle
Antworten:
Die gespeicherte Bash-Sitzung gilt für das Terminal, das zuletzt geschlossen wurde. Wenn Sie die Befehle für jede Sitzung speichern möchten, können Sie den hier erläuterten Trick verwenden .
Auf jeden Fall müssen Sie berücksichtigen, dass Befehle aus verschiedenen Sitzungen in Ihre Verlaufsdatei gemischt werden, damit es nicht so einfach ist, sie später zu lesen.
Siehe auch:
quelle
export PROMPT_COMMAND='history -a; history -r'
und im Terminal einige seltsame Verlaufszeilennummern gefunden. Nachdem ich einige Befehlszeilennummern ausgegeben habe, springt die Anzahl um 2000 statt um 1, was seltsam ist, aber wie gesagt: Der gesamte Verlauf des Terminals wird gespeichert.export
wird nicht gebraucht.Nach mehrmaligem Lesen von verwende
man bash
ich für jede Shell separate History-Dateien. Ich habemkdir -m 0700 ~/.history
dann einen hinzugefügtzu meinem
~/.bashrc
. Hin und wieder erinnere ich mich darandu -sk .history
und räum es aus. Es ist schön, jeden Befehl, den ich eingegeben habe, für mich gespeichert zu haben.Ich habe gerade das Obige benutzt, um zu sehen, was ich in letzter Zeit getan habe:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
oder
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(um das erste Argument
sudo mount
in die Sortierkette aufzunehmen).quelle
HISTFILESIZE
zweimal?man bash
.Ctrl+r
Arbeit wieder aufzunehmen?egrep 'whatever' .history/*
(odercat .history/* | egrep 'whatever'
) und verwende Strg-R, um den Verlauf einer einzelnen Sitzung zu durchsuchen. Lesen Sie mehrman bash-builtins
über den Befehl history. Meinesort .history/* | uniq -c | sort -n | wc -l
Shows 16033 eindeutige Befehle,cut '-d ' -f1 .history/* | sort | uniq -c | sort -n
zeigt 2004 eindeutige Befehle, meist Tippfehler. Das alles in die "History-Liste" von bash zu laden, würde nicht helfen.Um zu zeigen ,
history
von allen Terminals:Fügen Sie
export PROMPT_COMMAND='history -a; history -r'
Ihrer .bashrc-Datei hinzu.Quelle: http://northernmost.org/blog/flush-bash_history-after-each-command
quelle
history --merge
. Ich benutze das seit ungefähr einem Jahr und es löst das Problem. Wenn ich den neuesten Verlauf aus anderen Sitzungen erhalten möchte, führe ich einfach diesen Befehl aus und er steht mir sofort zur Verfügung.Eine weitere Alternative finden Sie unter " Behalten der persistenten Historie in der Bash ". Sie werden aufgefordert, alle Befehle, die jemals in ein Terminal eingegeben wurden, in einer "persistenten Verlaufsdatei" zu speichern (neben den üblichen Vorgängen für normale Benutzer
.history
).quelle
echo $$ $date_part "$command_part" >> ~/.persistent_history
erstellen. Dadurch werden den Einträgen die PIDs ihres Bash-Prozesses vorangestellt, damit wir mehrere Historien entwirren können.