Até onde eu sei, não há nenhuma maneira direta de alimentar o buffer interno bash
, mas se o seu objetivo é ter a string na linha de comando para poder editá-la, pode ser feito utilizando dois recursos bash
:
-
Substituição de parâmetros (como mencionado por RedGrittyBrick ) e
-
a
readline
functionshell-expand-line
:shell-expand-line
(M-C-e)Expand the line as the shell does. This performs alias and history expansion as well as all of the shell word expansions.
Exemplo:
$ $(grep installprocedure INSTALL)
Meta+Ctrl+e
Isso substituirá a linha de comando pelo resultado da substituição do comando.
Expandindo isso, você pode criar uma macro readline
para fazer isso automaticamente em qualquer comando arbitrário, sem a necessidade de incluir em backticks ou $()
:
$ bind '"\C-xs": "\C-a$(\C-e)\e\C-e"'
Pressionar Ctrl + X seguido de s moverá o cursor para o início da linha ( \C-a
), insira literalmente $(
, mova para o fim da linha ( \C-e
), insira literalmente )
e, finalmente, chame shell-expand-line
( \e\C-e
= Meta + Ctrl + e ).
Em outras palavras, ele substituirá a linha de comando por sua saída.