Respuestas:
Puedes usar la !!:gs/search/replace/notación para hacer lo que quieras. Esto utiliza la búsqueda y reemplazo global ( :gs):
antes de
$ echo "harm warm swarm barm"
harm warm swarm barm
después
$ !!: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. ¿Qué me estoy perdiendo?
bash --version= 4.2.45 (1) -lanzamiento.
No creo que hay una manera fácil de agregar algo para ^string1^string2hacer bashreemplazar todas las apariciones. Como slm señala, tienes que escribir !!:gs/string1/string1.
Pero en zsh, solo puedes agregar :G:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
En ambos bashy zsh, también puedes usar fc -sasí:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Esto a menudo se convierte en un alias llamado rpara que pueda hacer lo siguiente:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Creo que la mejor opción es usar ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&como haya más ocurrencias para reemplazar.
command-historyetiqueta para eso. Adicional. Además, supongo que te estás refiriendo a labashcáscara?