Выполнить предыдущую команду с несколькими заменами

Многие из вас, вероятно, знают, что команды ^ foo ^ bar ^ или !: gs / foo / bar полезны для запуска предыдущая команда с заменой шаблона "foo" на шаблон "bar".

Но есть ли способ заменить несколько шаблонов из предыдущей команды, например, в ls * .jpg | grep photo заменяет слова «jpg» и «фото» без слишком сложного сопоставления с образцом, например !: gs / jpg \ (. * \) photo / png \ 1foto ?

0
25.11.2016, 19:56
2 ответа

Вы можете сделать это следующим образом:

!!:s/jpg/png/:s/photo/picture/
2
28.01.2020, 02:34

Это не короче, чем просто повторный ввод вашей примерной команды, но вы подходите к этому с другой стороны и вызываете только те части, которые вам нужны (здесь ls и | grep , затем введите замену:

$ ls *.jpg | grep photo
$ !:0 *.png !:2-3 picture

Результат:

ls * .png | grep picture

0
28.01.2020, 02:34

Теги

Похожие вопросы