Me gustaría poder ejecutar múltiples comandos en el mismo archivo en una sola línea. La forma en que hago esto actualmente es:
commandA file && commandB file && perl -ne '...' file
Mi instinto me dice que debería haber una manera de proporcionar el argumento del nombre de archivo solo una vez y canalizarlo a ambos comandos simultáneamente xargs
o algo similar:
find file | xargs commandA && xargs commandB && xargs perl -ne '...'
Cuando intento esto, solo se ejecuta el primer comando. ¿Cómo puedo lograr lo que quiero hacer?
command-line
Zaid
fuente
fuente
Para shells como Bash, Korn y Z que tienen sustitución de proceso, puede hacer esto:
fuente
Puede usar xargs para construir una línea de comando, por ejemplo:
Simplemente conecte lo anterior a bash para ejecutarlo:
Extendiendo el ejemplo a todos los archivos * .c en el directorio actual (escapando de ls aquí para evitar cualquier sustitución de alias de shell):
fuente
find . -name "*enums*" | xargs -i echo -e echo {}\; ls -lh {}\; echo -e '\n\n' | bash
Yo no votaría por esto yo mismo. Es tonto y peligroso, pero solo por el interés de enumerar las formas de hacer esto, hay:
for cmd in "commandA" "commandB" "perl -ne '...'" ; do eval $cmd file ; done
fuente