¿Expandir el subshell antes de ejecutarlo?

¿Expandir el subshell antes de ejecutarlo?

A menudo ejecuto comandos usando subcapas y, a veces, me gustaría expandir las subcapas antes de ejecutar algo. De esta manera podría verificar lo que estoy haciendo y posiblemente editar también lo que está a punto de suceder.

Por ejemplo, ¿cómo puedo expandir la siguiente línea de comando antes de ejecutarla, para poder editar los resultados del subshell?

p.ej

$ find -name "test.txt" 
/tmp/test.txt

$ mv $(!!) /tmp/new.txt

Me gustaría ver la subcapa expandida.antesEjecuto el comando, así:

$ mv /tmp/test.txt /tmp/new.txt

Hay alguna manera de hacer esto?

Respuesta1

shell-expand-line( \e\C-e) expande las sustituciones de comandos en bash.

$ bind -p|grep shell-ex
"\e\C-e": shell-expand-line

$(!!)\e\C-eejecutaría el comando anterior nuevamente e insertaría la salida:

"\eo": "$(!!)\e\C-e"

También amplía otras sustituciones de comandos, pero no hay ningún comando como shell-expand-word.

En bash 4.0 o posterior, también puede habilitar globstar, escribir **/file.txty usar glob-complete-word( \eg) o glob-expand-word( \C-x*).

Respuesta2

Aquí tienes un truco útil: añade esta línea a ~/.inputrc (crea el archivo si es necesario):

Control-x: shell-expandir-línea

Tenga en cuenta que también puede realizar cualquiera de las siguientes opciones para expandir solo el historial, sus alias o ambos:

Control-x: historial-expandir-línea

o

Control-x: alias-expandir-línea

o

Control-x: historial-y-alias-expandir-línea

esto fue recogidode este blog, yesta pregunta en SuperUser, que es muy similar:

información relacionada