Substituição de Comando
Outra opção é usar Substituição de Comando . Envolver um comando em $()
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 a usar o estilo antigo de agrupar comandos com retrocessos:
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 de comando pela saída padrão do comando, com todas as novas linhas à direita excluídas. As novas linhas incorporadas não são eliminadas, 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 substituição do estilo antigo de substituição é usada, a contrabarra retém seu significado literal, exceto quando seguida por $
, '
ou \
. O primeiro backquote não precedido por uma barra invertida termina a substituição do comando. Ao usar o formulário $(command)
, todos os caracteres entre parênteses compõem o comando; nenhum é tratado especialmente.
As substituições de comandos podem ser aninhadas. Para aninhar ao usar o formulário com as costas, escape das contra-formas internas com barras invertidas.
Se a substituição aparecer entre aspas duplas, a divisão de palavras e a expansão do nome de arquivo não serão realizadas nos resultados.
Veja esta outra resposta para alguns bons exemplos de uso.