Mam skrypt w folderze, którego używam z długimi argumentami. Czy jest jakaś szansa, że mogę mieć historię poleceń wykonanych w tym konkretnym katalogu zamiast wracać do całej historii?
bash
directory
command-history
faber
źródło
źródło
history | less
być może? Naprawdę nie odpowiada na twoje pytanie, ale od tego bym zaczął.Odpowiedzi:
Podłączając się do PROMPT_COMMAND firmy bash, ta funkcja uruchamia się za każdym razem, gdy pojawi się nowy monit, więc jest to dobry czas, aby sprawdzić, czy znajdujesz się w katalogu, dla którego chcesz mieć własną historię. Funkcja ma cztery główne gałęzie:
$PWD
) nie zmienił się, nie rób nic (powrót).Jeśli PWD uległo zmianie, wówczas konfigurujemy funkcję lokalną, której jedynym celem jest faktyczne umieszczenie kodu „katalogu niestandardowego” w jednym miejscu. Będziesz chciał zastąpić moje katalogi testowe własnymi (oddzielonymi przez
|
).Ponieważ zmieniliśmy katalogi, zaktualizuj zmienną „poprzedni katalog”, a następnie zapisz historię w pamięci do HISTFILE, a następnie wyczyść historię w pamięci.
Jeśli zmieniliśmy w katalogu niestandardowym, a następnie ustawić HISTFILE być
.bash_history
plik w bieżącym katalogu.W przeciwnym razie, zmieniliśmy z katalogu niestandardowym, więc zresetować HISTFILE do jednej akcji.
Wreszcie, ponieważ zmieniliśmy pliki historii, przeczytaj ponownie poprzednią historię.
Aby wszystko działało, skrypt ustawia wartość PROMPT_COMMAND i zapisuje dwie zmienne do użytku wewnętrznego (podstawowy HISTFILE i „poprzedni katalog”).
źródło
Odpowiedź Jeffa jest świetna, jeśli chcesz historii dla jednego katalogu, ale jeśli nie masz nic przeciwko instalowaniu zsh, możesz użyć katalogu na historię, aby uzyskać historię specyficzną dla katalogu dla wszystkich katalogów.
Możesz zainstalować zsh poprzez:
Alternatywnie, jeśli chcesz zainstalować oh-my-zsh , możesz dodać wtyczkę histdb i napisać niestandardowe zapytanie, aby wysłać zapytanie do bazy danych sqlite dodanej przez histdb. Pisałem o tym i dodawałem automatyczne uzupełnianie w poście Dev Diaries . Sprawdź sekcję poleceń premiowych .
Zapytanie wygląda następująco
To akceptuje również opcjonalny limit:
na przykład.
źródło
Kiedy muszę kilkakrotnie użyć polecenia z długimi argumentami, zwykle tworzę alias w moim
~/.bash_aliases
lub możesz go umieścić w swoim,~/.bashrc
jeśli wolisz. Jest to łatwe i oszczędza czas, zamiast tego szukaj starych poleceń w historii.źródło