Antworten:
Sie können die !!:gs/search/replace/Notation verwenden, um das zu tun, was Sie wollen. Dies nutzt das globale Suchen & Ersetzen ( :gs):
Vor
$ echo "harm warm swarm barm"
harm warm swarm barm
nach
$ !!: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. Was vermisse ich?
bash --version= 4,2,45 (1) -Freisetzung.
Ich glaube nicht, dass es eine einfache Möglichkeit gibt, etwas hinzuzufügen ^string1^string2, bashum jedes Vorkommen zu ersetzen. Wie slm betont, muss man schreiben !!:gs/string1/string1.
Aber in zshkönnen Sie nur hinzufügen :G:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
In beiden bashund zshkönnen Sie auch so verwenden fc -s:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Dies wird oft zu einem Alias namens gemacht, rdamit Sie Folgendes tun können:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Ich glaube, dass die beste Option ist, ": &" zu verwenden
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&weitere Vorkommen zu ersetzen sind.
command-historyTag dafür verwenden. Hinzugefügt. Auch nehme ich an, Sie beziehen sich auf diebashShell?