
Por alguns motivos, a ordem das opções é importante para o comando. Por exemplo, diferentes ordens de opções podem causar ações diferentes em ffmpeg
, então xargs
de onde é adicionada a opção stdin
?
Por exemplo:
$ echo 'output.avi' | xargs ffmpeg -i input.avi -r 24
é totalmente equivalente a:
$ ffmpeg -i inpit.avi -r 24 output.avi
mas se eu quiser enviar input.avi
de echo
para xargs ffmpeg -i -r 24 output.avi
por pipe, como defino a string de STDIN para uma posição especificada?
Responder1
Não tenho certeza se estou entendendo você, mas se você está perguntando como pode controlar onde xargs
os argumentos são colocados quando passados para ele, você pode usar a opção -I{}
para indicar qual macro deseja usar para a entrada colada xargs
e depois usar desta macro onde quer que você queira que as coisas sejam xargs
expandidas.
OBSERVAÇÃO:Estou usando a notação {}
para minha macro e simplesmente coloco essa macro onde quiser que os argumentos sejam expandidos.
Exemplo
$ echo hi | xargs -I{} echo {}
hi
$ echo hi | xargs -I{} echo {} {}
hi hi
$ echo hi | xargs -I{} echo {} {} bye
hi hi bye
trecho da página de manual do 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.