Як вибірково переходити по історії команд Bash на терміналі Linux [дублікат]


9

Усі знають (або повинні знати!), Що на терміналі клавіші зі стрілками вгору та вниз використовуються для навігації по історії використовуваних команд.

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

Я знаю, що я міг би використовувати historyсписок раніше використовуваних команд і !nповторно виконувати n команду у згаданому списку, але коли історія зростає, це теж не дуже практично.

Ідеальною справою було б мати щось, що дозволить мені скористатись гарячою клавішею для навігації по історії, але просто між екземплярами, які містять те, що я вже набрав у командному рядку; тож у моєму прикладі після введення iwconfigвикористовуйте деякі клавіші (можливо, PgUp та PgDown?) для навігації лише через записи, які починаються з iwconfig .

Якщо це не можливо, також було б непогано , щоб надрукувати список , як historyзробити , але що буде містити тільки те , що я вже набрав (підозрюю , що historyі grepкоманда бере участь , але я не впевнений , що правильний синтаксис); але попереднє рішення гарячої клавіші було б найкращим варіантом.

Відповіді:


12

Ви можете шукати історію за допомогою Ctrl+, Rа потім вводити рядок пошуку (наприклад, iwзнайти iwconfig). Тоді ви все одно можете переміщатися по історії в цій точці за допомогою клавіш зі стрілками вгору та вниз або натисніть Ctrl+ Rще раз, щоб знайти попереднє виникнення.


Я не впевнений, що добре зрозумів, що це працює. Якщо я натискаю Ctrl + R і набираю iwconfig, він показує мені екземпляр, який містить його (не обов’язково найновіший), але якщо я використовую клавіші зі стрілками, він переміщується по всіх елементах, а не тільки по тих, що містить рядок. Мені здається, що він вибирає певний момент історії, щоб розпочати навігацію з (замість того, щоб починати знизу, як це робиться клавіша вгору), але крім цього, навігація така ж, як завжди. Я щось пропустив?
Sekhemty

Я думаю, що це зовсім не має значення, але про всяк випадок я використовую konsoleемулятор терміналу.
Сехемті

Вибачте, я оновив свою відповідь про те, як знайти попередні матчі.
Стефан Зайдель

5

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

Я відповів правильному синтаксису для друку відфільтрованого списку, я це зробив history | grep iwconfig(зрештою, це було не так складно); з результатом, який я можу використовувати !nз тепер легко відчитаним відфільтрованим списком.


3
Додатковий трюк: Використовуйте !n:p. Це друкує стару команду, не виконуючи її, і повертає її назад у вашу історію. Потім перейдіть до нього одним натисканням стрілки вгору і тепер ви можете редагувати його. Існує безліч інших дурних хитрощів на кшталт цього: ss64.com/bash/history.html
Логіка блукань

3

Я не можу коментувати відповідь Стефана, але вам зазвичай потрібно продовжувати натискання клавіш Ctrl + R. Дивіться цю сторінку для отримання додаткової інформації.


2

Натисніть "ctrl + r", після чого введіть рядок пошуку.

Якщо ви не шукаєте, тоді знову "ctrl + r"

Якщо його знайдено, натисніть клавішу Enter для його виконання або натисніть клавішу зі стрілкою вправо ->, щоб відредагувати її перед використанням.

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