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^string2
hacer bash
reemplazar 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 bash
y zsh
, también puedes usar fc -s
así:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Esto a menudo se convierte en un alias llamado r
para 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-history
etiqueta para eso. Adicional. Además, supongo que te estás refiriendo a labash
cáscara?