ЗШ - вывод всей истории?


37

Я недавно перешел с bash на zsh. В Баше, так (кроме рекурсивного поиска) , которые я использовал , чтобы найти ранее выполнять команды были history | grep whatever, где whateverэто немного команды я помню.

В Zsh это не работает. historyвозвращает только несколько элементов, хотя мой .zsh_historyфайл содержит много записей, которые я настроил для этого.

Как вывести всю мою историю, подходящую для поиска grep?

Ответы:


48

History принимает диапазон в записях zsh в качестве [first] [last]аргументов, поэтому все они запускаются history 0.

Чтобы получить справку zsh (по крайней мере, с умом), введите Alt-hкоманду history, и это вызовет справку для встроенных модулей.


3
Большой! Это по-прежнему раздражает по умолчанию, поэтому я добавляю это в свой файл псевдонимов:alias history="history 0"
Натан Лонг,

7
Не то, чтобы это
имело

2
Я сам использую этот псевдоним:alias h='history 1 | grep'
Харальд Нордгрен,

3
Мне кажется, это не сработает: у my ~/.zsh_historyесть 10066 строк, но history 0(или его эквивалент fc -l 0) выдает только 4999 строк.
Джейхендрен

2
Для history 1 | grepлюдей, я надеюсь, вы знаете о ctrl+r- лучший трюк / ярлык когда-либо!
Эмиль Ватаи

9

Принятый ответ правильный, но стоит отметить, что вам не нужно вызывать внешний grepдвоичный файл для выполнения поиска, так как эта способность запечена. У меня есть эта функция, определенная в моем .zshrc:

histsearch() { fc -lim "*$@*" 1 }

Заметки:

  • fcявляется встроенным Zsh, который контролирует интерактивную историю. historyэквивалентно fc -l.

  • -mФлаг требует шаблон, который должен быть в кавычках.

  • -iФлаг добавляет метку времени.

  • fcимеет множество других хитростей (например, ограничение поиска внутренней историей для текущего сеанса). Смотрите zshbuiltins(1)справочную страницу или официальную документацию .


Еще лучше использовать шаблон «* $ @ *» (обратите внимание на дополнительные звезды) вместо «$ @», поскольку последний дает только точные совпадения.
Петр Доброгост

1
Вы совершенно правы, @PiotrDobrogost! Я не уверен, как мне удалось отправить этот ответ в том состоянии, в котором я это делал - наверное, я набрал эту функцию по памяти. В его нынешнем виде это не очень удобно, поэтому я собираюсь отредактировать ответ, чтобы включить звездочки.
января

3

Посмотрите на FZF . Это помогает не только найти "что-либо" в истории вашей оболочки, но и в других интересных местах, например, в истории браузера, в истории каталогов и т. Д.

fzf - нечеткий искатель командной строки. Это означает, что вы можете искать частицы или фракции того, что вы ищете, и он будет отображать коллекцию совпадений, которые вы можете постоянно улучшать. Это действительно изменит правила игры.

Домашняя страница автора содержит ряд иллюстративных примеров.


Попробуйте добавить ссылку на этот ответ в поддержку того, что вы заявляете.
Сок Pimp IT

Добро пожаловать в Супер пользователя! Пожалуйста, прочтите Как рекомендовать программное обеспечение для получения минимальной необходимой информации и предложений о том, как рекомендовать программное обеспечение для Super User Чтобы ваш ответ был полезным, даже если приведенная ссылка не работает, эти данные следует отредактировать в вашем ответе.
Я говорю Восстановить Монику
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.