Один из моих любимых трюков с Unix - ^x^y
взять последнюю команду и заменить первый экземпляр «x» на «y». Однако мне интересно, работает ли подобный трюк, чтобы заменить все вхождения «x» на «y» в последней команде?
bash
shell
command-line
command-history
каменщик
источник
источник
command-history
тег для этого. Добавлен. Кроме того, я полагаю, вы имеете в видуbash
оболочку?Ответы:
Вы можете использовать
!!:gs/search/replace/
обозначение, чтобы делать то, что вы хотите. Это использует глобальный поиск & replace (:gs
):до
после
Рекомендации
источник
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
, Что мне не хватает?bash --version
= 4.2.45 (1) -релиз.Я не верю , что есть простой способ добавить что - то ,
^string1^string2
чтобы сделатьbash
замену всех вхождений. Как указывает slm, вы должны написать!!:gs/string1/string1
.Но
zsh
вы можете просто добавить:G
:В обоих случаях
bash
иzsh
, вы можете также использоватьfc -s
так:Это часто делается в псевдоним,
r
так что вы можете просто сделать:источник
Я считаю, что лучше всего использовать ": &"
источник
:&
сколько есть вхождений для замены.