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-e
ejecutarí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.txt
y 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: