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^string2per rendere bashsostituire 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 bashe zsh, puoi anche usare in fc -squesto modo:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Questo è spesso trasformato in un alias chiamato in rmodo 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-historytag per questo. Aggiunto. Inoltre, suppongo che ti riferisci allabashshell?