Многие из вас, вероятно, знают, что команды ^ foo ^ bar ^
или !: gs / foo / bar
полезны для запуска предыдущая команда с заменой шаблона "foo" на шаблон "bar".
Но есть ли способ заменить несколько шаблонов из предыдущей команды, например, в ls * .jpg | grep photo
заменяет слова «jpg» и «фото» без слишком сложного сопоставления с образцом, например !: gs / jpg \ (. * \) photo / png \ 1foto
?
Вы можете сделать это следующим образом:
!!:s/jpg/png/:s/photo/picture/
Это не короче, чем просто повторный ввод вашей примерной команды, но вы подходите к этому с другой стороны и вызываете только те части, которые вам нужны (здесь ls
и | grep
, затем введите замену:
$ ls *.jpg | grep photo
$ !:0 *.png !:2-3 picture
Результат:
ls * .png | grep picture