
Por algunas razones, el orden de las opciones es importante para el comando. Por ejemplo, diferentes órdenes de opciones pueden causar diferentes acciones en ffmpeg
, entonces, ¿ xargs
desde dónde se agrega la opción stdin
?
Por ejemplo:
$ echo 'output.avi' | xargs ffmpeg -i input.avi -r 24
es totalmente equivalente a:
$ ffmpeg -i inpit.avi -r 24 output.avi
pero si quiero enviar input.avi
desde echo
a xargs ffmpeg -i -r 24 output.avi
por tubería, ¿cómo configuro la cadena desde STDIN en una posición específica?
Respuesta1
No estoy completamente seguro de haberlo seguido, pero si pregunta cómo puede controlar dónde xargs
se colocan los argumentos cuando se le pasan, puede usar el interruptor -I{}
para indicar qué macro desea usar para la entrada que se pega xargs
y luego usarla. de esta macro donde quiera que se pasen las cosas para xargs
expandirlas.
NOTA:Estoy usando la notación {}
para mi macro. Luego simplemente coloco esa macro donde quiera que se expandan los argumentos.
Ejemplo
$ echo hi | xargs -I{} echo {}
hi
$ echo hi | xargs -I{} echo {} {}
hi hi
$ echo hi | xargs -I{} echo {} {} bye
hi hi bye
extracto de la página de manual de xargs
-I replace-str
Replace occurrences of replace-str in the initial-arguments with
names read from standard input. Also, unquoted blanks do not
terminate input items; instead the separator is the newline
character. Implies -x and -L 1.