Як отримати діапазон історії оболонки Bash


9

Як я можу отримати / фільтрувати записи історії в певному діапазоні?

У мене великий файл історії і часто його використовую

history | grep somecommand

Тепер у мене пам’ять досить погана, і я також хочу побачити, що я ще робив за час вступу в команду.

Поки що я роблю це: знайдіть матч, скажіть 4992 somecommand, тоді я

history | grep 49[0-9][0-9]

це, як правило, досить добре, але я б набагато краще зробити це більш точно, тобто побачити команди від 4972 до 5012, тобто 20 команд до і 20 після.

Мені цікаво, чи є простіший спосіб? Я підозрюю, налаштований сценарій в порядку, але, можливо, хтось ще робив щось подібне раніше.


Для маніпуляцій з історією є два вбудовані файли
LAFK повідомляє про відновлення Моніки

Відповіді:


13

Можна вказати grepнадрукувати рядки навколо матчу, наприклад, 3 до і 5 після:

history | grep -B 3 -A 5 somecommand

grep -C 4еквівалентно grep -A 4 -B 4.

Але часто ви не будете точно знати, скільки рядків ви хочете заздалегідь. Тому використовуйте менше та шукайте всередині нього. Ви навіть можете запустити пошук з командного рядка:

history | less +/somecommand

1
дуже класний трюк з less! Не знав, що ти можеш це зробити
warren

Насправді дуже добре ... Я бачу команду "навколо", яку я шукаю, навіть коли я не дуже її шукаю, але я пам'ятаю, як використовував її, коли використовував іншу відповідну команду! Хороший матеріал tnx.
Халил Гарбауї

8

Спробуйте fc:

fc -l 4972 5012

... це команда bash вбудована. (тому не спробуйте це в tcsh:>)


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.