Gibt es eine Möglichkeit, die Geschichte einer modernen Shell auf einen Pfad zu beschränken?
Meine Arbeitskontexte sind als Pfade im Dateisystem aufgeteilt, und das Muster der Shell-Aktivität, wie z. B. wiederholt ausgegebene Befehle, unterscheidet sich in der Regel von Projekt zu Projekt. Es wäre schön, wenn ich die Verlaufsfunktion auf Befehle aus dem aktuellen Pfad (oder Unterpfad) ausdehnen könnte.
shell
directory
command-history
cd-command
Sohocoke
quelle
quelle
Keine nette Antwort, aber eine Alternative, wenn Sie
bash
als Shell verwenden: Sie könnten einen Alias in Ihrem erstellen.bashrc
.Zum Beispiel:
Wenn Sie dann Folgendes eingeben
a
:history -w
)history -c
)/home/user/.a_history
und gelesen (history -r
)quelle
HISTFILE
. Es gibt keinen Grund, es in andere Programme zu exportieren, und ~ / .bashrc wird für jeden interaktiven Bash-Prozess ausgeführt, sodass Ihr Code zum Festlegen ohnehin in jedem Bash ausgeführt wird. Wenn eine Shell-definierte Variable nicht standardmäßig exportiert wird, sollten Sie sie im Allgemeinen selten exportieren.Wenn Sie ZSH verwenden, schauen Sie sich dieses kleine Plugin an, das ich kürzlich geschrieben habe, um dies zu handhaben:
https://github.com/ericfreese/zsh-cwd-history
Es speichert
HISTFILE
für jedes Verzeichnis, in dem Sie Befehle ausgeführt haben, ein separates Verzeichnis und fügt einenchpwd
Hook hinzu, mit demHISTFILE
Sie beim Ändern von Verzeichnissen zwischen s wechseln können.Es bietet auch ein Zle-Widget, das Sie an einen Tastendruck binden können, der
HISTFILE
zwischen Ihrem ursprünglichen "globalen"HISTFILE
und demHISTFILE
für Ihr aktuelles Arbeitsverzeichnis umschaltet .Es basierte ursprünglich auf Jim Hesters Plugin für den Verzeichnisverlauf , wurde jedoch seitdem von Grund auf neu geschrieben, um viele Probleme mit diesem Plugin zu beheben.
quelle
Ich habe ein ZSH-Plugin geschrieben, das macht, was Sie wollen: https://github.com/tymm/zsh-directory-history
Im Gegensatz zu anderen Lösungen greift mein Plugin automatisch auf die globale Historie zurück. Das bedeutet, dass Sie nicht zwischen Verzeichnisverlauf und globalem Verlauf wechseln müssen.
Die anderen Lösungen sind jedoch etwas leichter, denke ich.
quelle