Выполнить предыдущую команду, изменив один аргумент - PullRequest
1 голос
/ 02 мая 2020

Учитывая команду из моей истории, как я могу выполнить ту же команду, меняя один аргумент?

Например, если команда 34 - script.sh a b c, как я могу запустить команду script.sh a fff c, используя какую-то подстановку параметров?

Предположим, что в реальной жизни набирать b нелегко, поэтому использование механизма подстановки строк c нецелесообразно. Я знаю, что могу использовать редактирование и выполнение, но я ищу метод, который не требует открытия текстового редактора. Я предполагаю, что есть что-то вроде !34:blahblahblah, но я не знаю, как это сделать.

Я пытался прочитать руководство для zsh замен, но у меня такое ощущение, что я не знаю, какие ключевые слова искать.

РЕДАКТИРОВАТЬ: я знаю об истории и редактировании комментария, используя readline или edit-and-execute. Я ищу что-то более похожее на то же, что и команда 34, но измените третий параметр на blah, аналогично тому, как можно написать !34:3 для ссылки на параметр в команде 34.

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Единственная возможность, о которой я могу думать, это довольно громоздкая

 !!:0-2 new-argument !!:4

. !!:0-2 повторяет команду и ее первые два аргумента, !!:4 - последний аргумент последней команды (который можно также написать как !$, если хотите).

0 голосов
/ 02 мая 2020

Для точной команды las мы можем сделать:

^b^fff

Используйте символ каретки, чтобы указать, что вы хотите заменить, и замену.

...