Ich habe ein Skript in einem Ordner, das ich mit langen Argumenten verwende. Gibt es eine Möglichkeit, dass ich einen Verlauf der Befehle in diesem bestimmten Verzeichnis ausführen lassen kann, anstatt den gesamten Verlauf durchzugehen?
bash
directory
command-history
Faber
quelle
quelle
history | less
vielleicht? Es beantwortet Ihre Frage nicht wirklich, aber hier würde ich anfangen.Antworten:
Wenn Sie sich in PROMPT_COMMAND von bash einbinden, wird diese Funktion jedes Mal ausgeführt, wenn Sie eine neue Eingabeaufforderung erhalten. Es ist also eine angemessene Zeit, um zu überprüfen, ob Sie sich in einem Verzeichnis befinden, für das Sie einen benutzerdefinierten Verlauf wünschen. Die Funktion hat vier Hauptzweige:
$PWD
) nicht geändert hat, tun Sie nichts (return).Wenn das PWD hat geändert, dann setzen wir eine lokale Funktion , deren einziger Zweck nach oben ist das „Custom - Verzeichnis“ Code in einem Ort , an Faktor. Sie möchten meine Testverzeichnisse durch Ihre eigenen ersetzen (getrennt durch
|
).Da wir die Verzeichnisse geändert haben, aktualisieren Sie die Variable "Vorheriges Verzeichnis", speichern Sie den In-Memory-Verlauf in der HISTFILE und löschen Sie den In-Memory-Verlauf.
Wenn wir in ein benutzerdefiniertes Verzeichnis gewechselt haben , legen Sie HISTFILE als
.bash_history
Datei im aktuellen Verzeichnis fest.Andernfalls haben wir aus einem benutzerdefinierten Verzeichnis gewechselt. Setzen Sie daher HISTFILE auf das Standardverzeichnis zurück.
Da wir die Verlaufsdateien geändert haben, lesen Sie den vorherigen Verlauf zurück.
Um die Dinge in Gang zu bringen, legt das Skript den Wert PROMPT_COMMAND fest und speichert zwei Variablen für den internen Gebrauch (die Standard-HISTFILE und das "vorherige Verzeichnis").
quelle
Jeffs Antwort ist großartig, wenn Sie den Verlauf für ein einzelnes Verzeichnis möchten. Wenn Sie jedoch mit der Installation von zsh einverstanden sind, können Sie das Verzeichnis pro Verlauf verwenden , um einen für das Verzeichnis spezifischen Verlauf für alle Verzeichnisse abzurufen.
Sie können zsh installieren, indem Sie:
Wenn Sie oh-my-zsh installieren möchten , können Sie alternativ das Histdb- Plugin hinzufügen und eine benutzerdefinierte Abfrage schreiben , um die von Histdb hinzugefügte SQLite- Datenbank abzufragen. Ich habe darüber geschrieben und automatische Vervollständigungen in einem Dev Diaries- Beitrag hinzugefügt . Überprüfen Sie den Abschnitt mit den Bonusbefehlen .
Die Abfrage sieht so aus
Dies akzeptiert auch ein optionales Limit:
beispielsweise.
quelle
Wenn ich einen Befehl mit langen Argumenten mehrmals verwenden muss, erstelle ich normalerweise einen Alias in meinem
~/.bash_aliases
oder Sie können ihn in Ihren einfügen,~/.bashrc
wenn Sie dies bevorzugen. Es ist einfach und spart Zeit, stattdessen nach alten Befehlen in der Geschichte zu suchen.quelle