Uno de mis trucos favoritos de Unix es ^x^y
, que tomará el último comando y reemplazará la primera instancia de "x" con "y". Sin embargo, me pregunto si un truco similar funciona para reemplazar todas las instancias de "x" con "y" en el último comando.
97
command-history
etiqueta para eso. Adicional. Además, supongo que te estás refiriendo a labash
cáscara?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
después
Referencias
fuente
[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
hacerbash
reemplazar todas las apariciones. Como slm señala, tienes que escribir!!:gs/string1/string1
.Pero en
zsh
, solo puedes agregar:G
:En ambos
bash
yzsh
, también puedes usarfc -s
así:Esto a menudo se convierte en un alias llamado
r
para que pueda hacer lo siguiente:fuente
Creo que la mejor opción es usar ": &"
fuente
:&
como haya más ocurrencias para reemplazar.