Почему xargs выводит результаты с новыми строковыми символами?

То, о чем вы просите, не сработает.

Перемещение файлов по символической ссылке в /var, указывающей на /tmp, по-прежнему будет занимать место в root, поскольку индексный дескриптор по-прежнему будет указывать на каталог /tmp, расположенный в root. Вы можете убедиться в этом сами.

Единственный вариант — либо переместить данные из /tmpв другое место, либо добавить место в ваш rootLVM, так как именно там находится ваш каталог /tmp.

-1
18.01.2020, 19:51
2 ответа

Для GNU xargsпараметр -iявляется (устаревшим и )совпадает с -I {}. Это означает «заменить вхождение строки {}в утилите одним элементом из стандартного ввода, затем запустить утилиту и повторить со следующим элементом из стандартного ввода».

Ваш вызов утилиты — echo {}, и вы передаете две вещи в xargs. Это означает вызов echoдважды, каждый раз с одним из элементов, считываемым со стандартного ввода. Каждый вызов echoвыводит завершающую новую строку (, это особенность echo).

Без echo {}и -ixargsсоберет как можно больше элементов из стандартного ввода и выведет их, как если бы он вызвал echoсо всеми ими одновременно.

Короче говоря, xargsне добавляет новую строку, echoдобавляет. Он делает это, потому что вы вызываете его несколько раз.

Пример (с добавлением -t, чтобы xargsпоказывал, что он делает):

$ printf 'file1\nfile2\n' | xargs -t -I {} echo {}
echo file1
file1
echo file2
file2
$ printf 'file1\nfile2\n' | xargs -t echo
echo file1 file2
file1 file2
2
28.01.2020, 05:08

Символы новой строки добавляются с помощью echo, , а не с помощью xargs.

Разница при использовании -iзаключается в том, что эта опция задает-L 1(одну строку или одно поле, разделенное нулевым значением, на команду ). Таким образом, echoзапускается один раз для каждого поля ввода, и, таким образом, символ новой строки между полями(echoобычно добавляет символ новой строки после завершения ).

Без -iи, следовательно, без -L 1каждое эхо получает больше поля, поэтому большинство полей разделяются пробелом (эхо конкатенация его аргументов, разделенных пробелом ).

0
28.01.2020, 05:08

Теги

Похожие вопросы