Получить предыдущие команды в терминале, которые соответствуют введенной в настоящее время команде [duplicate]

7

В некоторых терминалах вы можете сделать что-то вроде этого ...

Введите некоторую команду

nmap -sn 192.168.1.1/24

Затем продолжайте делать другие вещи в терминале какое-то время. Затем вы можете ввести

nmap

, а затем просто нажмите клавишу , и он проиндексирует все команды, которые начинаются с того, что вы набрали, в данном случае nmap , например.

Мой пример был довольно коротким, но иногда вы вводите очень длинную команду, которую хотите запустить снова, и я знаю, что вы можете нажать , пока не найдете ее снова, но она проходит через every , и может потребоваться некоторое время, если вы ввели его давно.

Есть ли способ заставить это работать в терминале Ubuntu?

    
задан Ryan Stull 16.04.2015 в 02:05
источник

4 ответа

17

Да, есть очень простой способ поиска в вашей истории команд. Когда на терминале нажмите Ctrl - R , чтобы начать поиск, вы можете набрать nmap , и он будет искать обратно последнюю команду, используя nmap.

Если вы не хотите, чтобы последняя команда содержала слово «nmap», а другое - в прошлом, вы можете снова нажать Ctrl - R как много раз, как вы хотели бы.

    
ответ дан Robobenklein 16.04.2015 в 02:09
источник
5

Я всегда использую history , для меня просто удобнее видеть все команды, которые я печатаю, например:

history

перечисляет все команды, которые вы набрали некоторое время

history | grep nmap

перечислены только команды с nmap

history | grep nmap | tail -10

history | grep nmap | head -10

перечислены последние и первые 10 команд с nmap

затем просто скопируйте и вставьте его снова.

    
ответ дан JoKeR 16.04.2015 в 02:24
5

То, что я предпочитаю использовать для достижения этой цели, - это переназначить ключи Up и Down для поиска истории Bash. Этого можно добиться, добавив следующее к .inputrc :

"\e[A": history-search-backward
"\e[B": history-search-forward

После перезагрузки вашей оболочки нажатие Up или Вниз в пустой строке будет перемещаться по всем командам и нажимать Вверх или < kbd> Вниз после ввода, например, nmap будет перемещаться по всем командам, которые начинаются с того, что вы набрали.

    
ответ дан José Luis 16.04.2015 в 13:59
2

Если вы находитесь в режиме vi в bash ( set -o vi ), вы можете перейти в командном режиме (нажмите Esc ), а затем введите /whatever_you_want , а затем Enter.

Он будет искать то, что вы хотите, и вы можете прокручивать с помощью кнопок j и k . Нажмите Enter, когда вы найдете нужную команду.

Чтобы иметь возможность вводить команды, когда вы нажали Esc, вам нужно нажать i (это vi).

Возврат к «нормальному» режиму оболочки выполняется через set -o emacs .

    
ответ дан Michael Hooreman 16.04.2015 в 10:19