Czy istnieje sposób na ograniczenie zakresu historii współczesnej powłoki do ścieżki?
Moje konteksty robocze są podzielone jako ścieżki w systemie plików, a wzorzec aktywności powłoki, takiej jak wielokrotnie wydawane polecenia, zwykle różni się dla każdego „projektu”. Byłoby miło, gdybym mógł rozszerzyć funkcję historii do poleceń wydawanych z bieżącej ścieżki (lub ścieżki podrzędnej).
shell
directory
command-history
cd-command
Sohocoke
źródło
źródło
Nie jest to zgrabna odpowiedź, ale alternatywa, jeśli używasz
bash
jako powłoki: możesz utworzyć w swoim aliasie jakiś alias.bashrc
.Na przykład:
Następnie, jeśli wpiszesz
a
:history -w
)history -c
)/home/user/.a_history
i read (history -r
)źródło
HISTFILE
. Nie ma powodu, aby eksportować go do innych programów, a ~ / .bashrc jest wykonywany dla każdego interaktywnego procesu bash, więc kod do jego ustawienia będzie uruchamiany w każdym bashu. Ogólnie, jeśli zmienna zdefiniowana w powłoce nie jest domyślnie eksportowana, rzadko należy ją eksportować.Jeśli używasz ZSH, spójrz na tę małą wtyczkę, którą niedawno napisałem, aby to obsłużyć:
https://github.com/ericfreese/zsh-cwd-history
Przechowuje osobny
HISTFILE
dla każdego katalogu, w którym wykonałeś polecenia, i dodajechpwd
zaczep, aby przełączać się międzyHISTFILE
s podczas zmiany katalogów.Zapewnia również widget zle, który można powiązać z naciśnięciem klawisza, który będzie przełączał
HISTFILE
między oryginalnym „globalnym”HISTFILE
aHISTFILE
bieżącym katalogiem roboczym.Pierwotnie był oparty na wtyczce Jima Hestera dla poszczególnych katalogów , ale od tego czasu został przepisany od podstaw, aby naprawić wiele problemów z tą wtyczką.
źródło
Napisałem wtyczkę ZSH, która robi to, co chcesz: https://github.com/tymm/zsh-directory-history
W przeciwieństwie do innych rozwiązań moja wtyczka automatycznie wraca do historii globalnej. Oznacza to, że nie musisz przełączać się między historią katalogów a historią globalną.
Jednak inne rozwiązania są nieco lżejsze.
źródło