Tente fazer isso:
printf '%s\n' /usr/bin/* | while IFS= read -r cmd; do "$cmd" --version; done
Existe uma maneira de realmente executar os resultados de um comando shell, em vez de usá-los como argumentos para outro comando?
Por exemplo, eu gostaria de executar '--version' em todos os executáveis em uma pasta, algo como:
ls /usr/bin/ | --version
Eu encontrei uma maneira usando o find / exec:
find /usr/ -name valgrind -exec {} --version \;
Mas eu gostaria de fazer isso com o ls. Eu pesquisei por mais de 45 minutos e não consigo encontrar ajuda.
Se você estiver tentando executar todos os arquivos executáveis em um determinado diretório com a opção --version
, tente este one-liner (usando / usr / bin como o diretório de exemplo):
for f in /usr/bin/*; do [ -x "$f" ] && $f --version; done
para reavaliar a saída do shell como entrada do shell, use eval
.
eval "$(your command here)"
Tags command-line exec