Risposte:
Puoi usare la !!:gs/search/replace/
notazione per fare quello che vuoi. Questo utilizza la ricerca globale e sostituisci ( :gs
):
prima
$ echo "harm warm swarm barm"
harm warm swarm barm
dopo
$ !!: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
. Cosa mi sto perdendo?
bash --version
= 4.2.45 (1)-release.
Non credo ci sia un modo semplice per aggiungere qualcosa ^string1^string2
per rendere bash
sostituire ogni occorrenza. Come sottolinea slm, devi scrivere !!:gs/string1/string1
.
Ma in zsh
, puoi semplicemente aggiungere :G
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
In entrambi bash
e zsh
, puoi anche usare in fc -s
questo modo:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Questo è spesso trasformato in un alias chiamato in r
modo da poter semplicemente fare:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Credo che l'opzione migliore sia usare ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&
più occorrenze da sostituire.
command-history
tag per questo. Aggiunto. Inoltre, suppongo che ti riferisci allabash
shell?