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^string2
sprawi, że bash
zastąpi każde wystąpienie. Jak wskazuje SLM, musisz pisać !!:gs/string1/string1
.
Ale zsh
możesz po prostu dodać :G
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
W obu przypadkach bash
, a zsh
można też użyć fc -s
takiego:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Często jest to przekształcane w alias o nazwie, r
dzię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-history
tagu. Dodany. Zakładam też, że masz na myślibash
powłokę?