A menudo ejecuto comandos usando subshells, y a veces me gustaría expandir los subshells antes de ejecutar algo. De esta manera podría verificar lo que estoy haciendo y posiblemente editar lo que está por suceder también.
Por ejemplo, ¿cómo puedo ampliar la siguiente línea de comando antes de ejecutarla, para poder editar los resultados de la subshell?
p.ej
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
Me gustaría ver la subshell expandida antes de ejecutar el comando, así:
$ mv /tmp/test.txt /tmp/new.txt
Hay alguna manera de hacer esto?
bash
shell
command-history
subshell
Brad Parks
fuente
fuente
zsh
y es genial y hace esto, como sugieres ... ¡buen consejo! Dejaré la respuesta original aquí, ya que era unabash
pregunta.Respuestas:
shell-expand-line
(\e\C-e
) expande las sustituciones de comandos en bash.$(!!)\e\C-e
volvería a ejecutar el comando anterior e insertaría la salida:También expande otras sustituciones de comandos, pero no hay comandos como
shell-expand-word
.En bash 4.0 o posterior también puede habilitar
globstar
, escribir**/file.txt
y usarglob-complete-word
(\eg
) oglob-expand-word
(\C-x*
).fuente
Aquí hay un truco útil: agregue esta línea a ~ / .inputrc (creando el archivo si es necesario):
Tenga en cuenta que también puede usar uno de los siguientes para expandir solo el historial, o sus alias, o ambos:
o
o
Esto se obtuvo de este blog , y esta pregunta sobre SuperUser , que es muy similar:
fuente