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

zshy es genial y hace esto, como sugieres ... ¡buen consejo! Dejaré la respuesta original aquí, ya que era unabashpregunta.Respuestas:
shell-expand-line(\e\C-e) expande las sustituciones de comandos en bash.$(!!)\e\C-evolverí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.txty 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