Eu tenho um comando de construção incremental para o meu projeto que produzirá algo se eu fizer uma construção limpa e produzirá outra coisa (menos) se eu fizer uma construção incremental.
Como posso salvar isso se já executo uma compilação limpa mycommand.sh
e a saída é impressa na janela do terminal (sem usar copiar e colar)?
esqueci de fazer
mycommand.sh > myfile.txt
ou
mycommand.sh >> myfile.txt
para salvar a saída em um arquivo.
Responder1
Embora $(!!)
a execução repetida do comando anterior possa parecer (ou às vezes ser) uma solução, também tem suas desvantagens que você precisacompletamenteentenda como usá-lo.
Exemplo: Se o comando fez algumas modificações como
rm -rv /tmp/*
servirá, então executar novamente esse comando de qualquer maneira podenãoproduz a mesma saída de antes, com a exceção de que se /tmp/ estava vazio antes da primeira execução e ainda está vazio na segunda vez, a saída deverá ser a mesma.
Resumindo: não háseguromaneira de reutilizar ou salvar (sem copiar e colar) a saída do último comando se você não a salvou enquanto o comando foi executado.
Responder2
Você não pode, pois o bash não aloca nenhuma saída para nenhum parâmetro ou bloco em sua memória.
No entanto, você pode usar $(!!)
pararecalcular(não reutilizar) a saída do último comando.
O !!
sozinho executa o último comando.
$ echo pierre
pierre
$ echo my name is $(!!)
echo my name is $(echo pierre)
my name is pierre