Подтвердить что ты не робот

Поиск в Matlab-подобной команде в командной строке unix

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

4b9b3361

Ответ 1

В 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, который вернул меня в команду эха. В этот момент нажатие Enter выполнит команду.

Ответ 2

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

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

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

Ответ 3

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

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

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