ZSH - вивести всю історію?


37

Нещодавно я перейшов з bash на zsh. В bash, одним із способів (крім рекурсивного пошуку), який я використовував для пошуку раніше запущених команд, було те history | grep whatever, де whateverє біт команди, який я пам’ятаю.

У zsh це не працює. historyповертає лише декілька елементів, навіть якщо мій .zsh_historyфайл містить багато записів, які я його налаштував.

Як я можу вивести всю свою історію, придатну для пошуку grep?

Відповіді:


48

Історія приймає діапазон в записах zsh як [first] [last]аргументи, щоб запустити їх усі history 0.

Щоб отримати довідку zsh (принаймні, з урахуванням), введіть Alt-hкоманду history, і це допоможе отримати вбудовані модулі.


3
Чудово! Мені це прикро за замовчуванням, тому я додаю це до файлу псевдонімів:alias history="history 0"
Nathan Long

7
Не важливо, але список історії починається з 1, а не 0.
ggustafsson

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

3
Це, здається, не працює для мене: у мого ~/.zsh_historyє 10066 рядків, але history 0(або його еквівалент fc -l 0) виводиться лише 4999 рядків.
jayhendren

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! Я не впевнений, як мені вдалося подати цю відповідь у такому стані - я здогадуюсь, що я повинен був набрати цю функцію з пам'яті. Оскільки це є, це не дуже зручно, тому я збираюсь відредагувати відповідь, щоб включити зірочки.
wjv

3

Погляньте на fzf . Це допомагає не тільки знаходити "будь-які частинки" в історії вашої оболонки, але і в інших цікавих місцях, наприклад, історії браузера, історії каталогів тощо.

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

Домашня сторінка автора містить ряд ілюстративних прикладів.


Розгляньте можливість додавання посилань на цю відповідь, що підтверджує те, що ви заявляєте.
Pimp Juice IT

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