Onde o 'xargs' adiciona a opção do STDIN?

1

Devido a algumas razões, a ordem de opção é importante para o comando. Por exemplo, a ordem de opções diferentes pode causar ações diferentes em ffmpeg , então onde xargs adiciona 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 faço para definir a string de STDIN para uma posição especificada?

    
por Kevin Dong 17.11.2014 / 03:47

1 resposta

4

Não tenho certeza se vou segui-lo, mas se você está perguntando como você pode controlar onde xargs coloca os argumentos quando passados para ele, você pode usar a opção -I{} para indicar qual macro você deseja usar para entrada colada em xargs e, em seguida, use essa macro sempre que quiser que as coisas passem para xargs expandido.

OBSERVAÇÃO: estou usando a notação {} para minha macro. Depois, simplesmente coloco essa macro onde quer que eu queira os argumentos 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.
    
por 17.11.2014 / 04:48

Tags