Ostatnio przeszedłem z bash na zsh. W bash, jednym ze sposobów (oprócz wyszukiwania rekurencyjnego), w którym znajdowałem wcześniej uruchomione polecenia było history | grep whatever
, gdzie whatever
jest kawałek polecenia, które pamiętam.
W Zsh to nie działa. history
zwraca tylko kilka elementów, mimo że mój .zsh_history
plik zawiera wiele wpisów, do których skonfigurowałem go.
Jak mogę wydrukować całą historię, odpowiednią do wyszukiwania grep
?
alias history="history 0"
alias h='history 1 | grep'
~/.zsh_history
ma 10066 linii, alehistory 0
(lub jej odpowiednikfc -l 0
) drukuje tylko 4999 linii.history 1 | grep
ludzi, mam nadzieję, że wiesz octrl+r
- najlepszy trick / skrót w historii!Przyjęta odpowiedź jest poprawna, ale warto zauważyć, że nie trzeba wywoływać zewnętrznego
grep
pliku binarnego, aby przeprowadzić wyszukiwanie, ponieważ ta umiejętność jest włączona. Mam tę funkcję zdefiniowaną w moim.zshrc
:Uwagi:
fc
jest wbudowanym zsh, który kontroluje interaktywną historię.history
jest równoważne zfc -l
.-m
Flag wymaga wzorzec, który musi być cytowany.-i
Flaga dodaje znacznik czasu.fc
ma wiele innych sztuczek (np. ograniczenie wyszukiwania do historii wewnętrznej dla bieżącej sesji). Zobaczzshbuiltins(1)
stronę podręcznika lub oficjalną dokumentację .źródło
Spójrz na FZF . Pomaga nie tylko znaleźć „cząstki czegokolwiek” w historii twojej powłoki, ale także w innych interesujących miejscach, np. Historii przeglądarki, historii katalogów itp.
fzf to wyszukiwarka rozmytych wierszy poleceń. Oznacza to, że możesz wyszukiwać cząstki lub frakcje tego, czego szukasz, i wyświetla kolekcję dopasowań, które możesz stale udoskonalać. To naprawdę zmieniacz gier.
Strona główna autora zawiera wiele przykładowych przykładów.
źródło