Respostas:
Você pode usar a !!:gs/search/replace/notação para fazer o que quiser. Isso utiliza a pesquisa global & replace ( :gs):
antes
$ echo "harm warm swarm barm"
harm warm swarm barm
depois de
$ !!: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. o que estou perdendo?
bash --version= 4.2.45 (1) - liberação.
Eu não acredito que há uma maneira fácil de adicionar algo a ^string1^string2fazer bashsubstituir todas as ocorrências. Como slm aponta, você deve escrever !!:gs/string1/string1.
Mas zsh, basta adicionar :G:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
Nos dois bashe zsh, você também pode usar fc -sassim:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Isso geralmente é transformado em um alias chamado rpara que você possa fazer:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Eu acredito que a melhor opção é usar ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&houver mais ocorrências para substituir.
command-historytag para isso. Adicionado. Além disso, suponho que você esteja se referindo aobashshell?