3

Как я могу использовать историю bash для запуска команды с аргументами из команды в истории?

Я знаю, что я могу использовать !! повторить последнюю команду, но как я могу запустить новую команду с этими аргументами?

например, я сначала запускаю:

~/somefolder/script.sh somefile

Я хочу быстро бежать

~/somefolder/script.sh anotherfile

Я пытался !! anotherfile но это не сработало.

Или, что еще лучше, как я могу запустить !-2 newarguments для запуска второй последней команды истории с новыми аргументами?

Я не хочу использовать стрелки для прокрутки истории, а затем возврата к аргументам.

2 ответа2

5

Чтобы выбрать имя команды, используйте модификатор:0:

$ man bash
$ !!:0 csh
man csh

Выберите все аргументы с самой последней командой с помощью!*

$ man sed awk perl
$ which !*
which sed awk perl
/usr/bin/sed
/usr/bin/awk
/usr/bin/perl

Выберите 2-ю команду, ранее выполненную относительно текущей команды, и выберите все ее аргументы с помощью:

$ echo !-2:*
echo sed awk perl
sed awk perl

Выберите третью команду, ранее выполненную относительно текущей команды, и выберите ее второй аргумент:

$ echo !-3:2
echo awk
awk

Выберите последнюю команду, начавшуюся с "который", и включите ее третий аргумент:

$ echo !which:3
echo perl
perl

Все что сказано, ответы на два ваших конкретных вопроса:

  1. Смотрите первый пример выше.
  2. ! -2:0 "новый список аргументов"
-1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .