O que os xargs fazem se usados sem nenhum parâmetro?

1
[user@notebook ~] echo -e '1\n2\n3\n4'
1
2
3
4
[user@notebook ~] echo -e '1\n2\n3\n4' | xargs
1 2 3 4
[user@notebook ~] 

Minha pergunta: Então o xargs remove as novas linhas se usado sem parâmetros?

    
por gasko peter 20.01.2014 / 15:53

3 respostas

2

citando a página do manual:

xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by items read from standard input. Blank lines on the standard input are ignored.

Because Unix filenames can contain blanks and newlines, this default behaviour is often problematic; filenames containing blanks and/or newlines are incorrectly processed by xargs. In these situations it is better to use the -0 option, which prevents such problems. When using this option you will need to ensure that the program which produces the input for xargs also uses a null character as a separator. If that program is GNU find for example, the -print0 option does this for you.

    
por 20.01.2014 / 16:10
4

Sem argumentos xargs assume como padrão os parâmetros que são passados para ele.

da página do manual

This manual page documents the GNU version of xargs. xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by items read from standard input. Blank lines on the standard input are ignored.

Observe o pouco sobre "... o padrão é /bin/echo ...".

Remoção de novas linhas?

Esse é o propósito de xargs . Leva uma lista de argumentos, muitas vezes divididos por espaços & newlines (podem ser divididas por outros delimitadores), e reembalar-los como um único argumento, otimizando os argumentos para que eles se encaixam no valor de espaço do ARG_MAX.

    
por 20.01.2014 / 16:10
0

Sim. Sem argumentos, xargs substitui novas linhas por espaços, porque:

  1. Agrupa todos os itens de entrada separados por espaço em branco em uma única lista separada por espaço de até ARG_MAX items; e
  2. Passa essa lista para /bin/echo ; quais
  3. Imprime a lista de itens passados para ela, em uma única linha.
por 23.03.2015 / 02:47

Tags