Я недавно перешел с bash на zsh. В Баше, так (кроме рекурсивного поиска) , которые я использовал , чтобы найти ранее выполнять команды были history | grep whatever
, где whatever
это немного команды я помню.
В Zsh это не работает. history
возвращает только несколько элементов, хотя мой .zsh_history
файл содержит много записей, которые я настроил для этого.
Как вывести всю мою историю, подходящую для поиска grep
?
alias history="history 0"
alias h='history 1 | grep'
~/.zsh_history
есть 10066 строк, ноhistory 0
(или его эквивалентfc -l 0
) выдает только 4999 строк.history 1 | grep
людей, я надеюсь, вы знаете оctrl+r
- лучший трюк / ярлык когда-либо!Принятый ответ правильный, но стоит отметить, что вам не нужно вызывать внешний
grep
двоичный файл для выполнения поиска, так как эта способность запечена. У меня есть эта функция, определенная в моем.zshrc
:Заметки:
fc
является встроенным Zsh, который контролирует интерактивную историю.history
эквивалентноfc -l
.-m
Флаг требует шаблон, который должен быть в кавычках.-i
Флаг добавляет метку времени.fc
имеет множество других хитростей (например, ограничение поиска внутренней историей для текущего сеанса). Смотритеzshbuiltins(1)
справочную страницу или официальную документацию .источник
Посмотрите на FZF . Это помогает не только найти "что-либо" в истории вашей оболочки, но и в других интересных местах, например, в истории браузера, в истории каталогов и т. Д.
fzf - нечеткий искатель командной строки. Это означает, что вы можете искать частицы или фракции того, что вы ищете, и он будет отображать коллекцию совпадений, которые вы можете постоянно улучшать. Это действительно изменит правила игры.
Домашняя страница автора содержит ряд иллюстративных примеров.
источник