Substituição de Comando
Outra opção é usar a Substituição de Comando . A quebra de um comando $()
executará o comando e substituirá o comando por sua saída.
cat $(find ./inhere -size 1033c 2> /dev/null)
se tornará
cat ./inhere/file1 .inhere/file3
Isso é mais ou menos equivalente ao uso do estilo antigo de agrupar comandos com back ticks:
cat `find ./inhere -size 1033c 2> /dev/null`
Mais detalhes dos documentos vinculados acima
O Bash executa a expansão executando o comando em um ambiente de subshell e substituindo a substituição do comando pela saída padrão do comando, com as novas linhas finais excluídas. As novas linhas incorporadas não são excluídas, mas podem ser removidas durante a divisão de palavras. A substituição do comando $(cat file)
pode ser substituída pelo equivalente, mas mais rápido $(< file)
.
Quando a forma de acento grave do velho estilo de substituição é utilizado, barra invertida mantém o seu significado literal excepto quando seguido por $
, `
, ou \
. A primeira cotação anterior não precedida por uma barra invertida finaliza a substituição do comando. Ao usar o $(command)
formulário, todos os caracteres entre parênteses formam o comando; nenhum é tratado especialmente.
As substituições de comando podem estar aninhadas. Para aninhar ao usar o formulário com aspas anteriores, escape das aspas internas internas com barras invertidas.
Se a substituição aparecer entre aspas duplas, a divisão de palavras e a expansão do nome do arquivo não são executadas nos resultados.
Veja esta outra resposta para alguns bons exemplos de uso.