Ответы:
Вы можете использовать !!:gs/search/replace/
обозначение, чтобы делать то, что вы хотите. Это использует глобальный поиск & replace ( :gs
):
до
$ echo "harm warm swarm barm"
harm warm swarm barm
после
$ !!:gs/arm/orn/
echo "horn worn sworn born"
horn worn sworn born
[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
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
В обоих случаях bash
и zsh
, вы можете также использовать fc -s
так:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Это часто делается в псевдоним, r
так что вы можете просто сделать:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Я считаю, что лучше всего использовать ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&
сколько есть вхождений для замены.
command-history
тег для этого. Добавлен. Кроме того, я полагаю, вы имеете в видуbash
оболочку?