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
, bash
um jedes Vorkommen zu ersetzen. Wie slm betont, muss man schreiben !!:gs/string1/string1
.
Aber in zsh
können Sie nur hinzufügen :G
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
In beiden bash
und zsh
kö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, r
damit 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-history
Tag dafür verwenden. Hinzugefügt. Auch nehme ich an, Sie beziehen sich auf diebash
Shell?