Matlab-подобный поиск истории команд в командной строке unix - PullRequest
12 голосов
/ 21 августа 2010

В Matlab есть очень хорошая функция, которая мне нравится. Предположим, я набрал команду very-long-command, а затем несколько команд. Затем, если мне снова понадобится длинная команда, я просто наберу very и нажму клавишу со стрелкой вверх, появится моя длинная команда. Он находит последнюю команду, которая начинается с very. Я не могу сделать то же самое в командной строке Unix, когда я пытаюсь это сделать, он игнорирует все, что я набрал, и возвращается к последним командам в хронологическом порядке. Есть ли способ сделать это?

Ответы [ 3 ]

10 голосов
/ 21 августа 2010

В bash эта функциональность обеспечивается командами history-search-forward и history-search-backward, которые по умолчанию не привязаны ни к каким клавишам (см. здесь ). Если вы запускаете

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

будет выполнять поиск по стрелке вверх и вниз по истории вперед и назад по строке символов между началом текущей строки и точкой. См. Также этот связанный вопрос переполнения стека .

8 голосов
/ 21 августа 2010

В bash нажатие ctrl - r позволит вам выполнить поиск по истории:

$ echo 'something very long'
something very long
$ # blah
$ # many commands later...
(reverse-i-search)`ec': echo 'something very long'

В приведенном выше фрагменте я нажимаю ctrl - r на следующей строке после # many commands later..., а затем набираю e c что вернуло меня к команде echo. В этот момент команда Enter выполнит команду.

3 голосов
/ 21 августа 2010

Вы можете сделать то же самое, используя "!".Например:

 $ echo "Hello"
 Hello
 $ !echo
 echo "Hello"
 Hello

Тем не менее, это плохая идея - делать что-то подобное (что, если последняя команда сделала что-то разрушительное?).Если вы ожидаете, что что-то будете использовать повторно, я предлагаю вам создать сценарий оболочки и сохранить его где-нибудь (когда я планирую что-то использовать повторно, я создаю сценарий в ~ / .local / bin).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...