Costumo executar comandos usando subshells e, às vezes, gostaria de expandi-los antes de executar alguma coisa. Dessa forma, pude verificar o que estou fazendo e, possivelmente, editar o que está prestes a acontecer também.
Por exemplo, como posso expandir a linha de comando a seguir antes de executá-la, para editar os resultados do subshell?
por exemplo
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
Gostaria de ver o subshell expandido antes de executar o comando, assim:
$ mv /tmp/test.txt /tmp/new.txt
Existe alguma maneira de fazer isso?
bash
shell
command-history
subshell
Brad Parks
fonte
fonte
zsh
e é ótimo e faz isso, como você sugere ... boa dica! Deixarei a resposta original aqui, pois foi umabash
pergunta.Respostas:
shell-expand-line
(\e\C-e
) expande substituições de comandos no bash.$(!!)\e\C-e
execute o comando anterior novamente e insira a saída:Ele também expande outras substituições de comando, mas não existe um comando semelhante
shell-expand-word
.No bash 4.0 ou posterior, você também pode ativar
globstar
, digitar**/file.txt
e usarglob-complete-word
(\eg
) ouglob-expand-word
(\C-x*
).fonte
Aqui está um truque útil - adicione esta linha ao ~ / .inputrc (criando o arquivo, se necessário):
Observe que você também pode seguir um destes procedimentos para expandir apenas o histórico ou seus aliases ou ambos:
ou
ou
Isso foi colhido neste blog e nesta pergunta no SuperUser , que é muito semelhante:
fonte