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
readlinefunctionshell-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.