Odpowiedzi:
Za pomocą !!:gs/search/replace/notacji możesz robić, co chcesz. Wykorzystuje to globalne wyszukiwanie i zamianę ( :gs):
przed
$ echo "harm warm swarm barm"
harm warm swarm barm
po
$ !!: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. czego mi brakuje?
bash --version= 4.2.45 (1) -release.
Nie sądzę, że istnieje prosty sposób na dodanie czegoś, co ^string1^string2sprawi, że bashzastąpi każde wystąpienie. Jak wskazuje SLM, musisz pisać !!:gs/string1/string1.
Ale zshmożesz po prostu dodać :G:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
W obu przypadkach bash, a zshmożna też użyć fc -stakiego:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Często jest to przekształcane w alias o nazwie, rdzięki czemu możesz po prostu:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Uważam, że najlepszą opcją jest użycie „: &”
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&ile jest więcej wystąpień do zastąpienia.
command-historytagu. Dodany. Zakładam też, że masz na myślibashpowłokę?