1

Что именно xargs?

Как вы используете его?
Когда это будет считаться прагматичным или уместным для этого?

2 ответа2

3

xargs берет ввод из своего стандартного ввода для создания команд с этим вводом в качестве аргументов. Это очень полезно, когда следующая команда может принимать только ограниченное количество аргументов и вам нужно обработать большое количество аргументов.

Входные данные обычно разделяются пробелами. Поскольку xargs должен обрабатывать имена файлов очень часто, есть ключ -0 который читает входной разделенный нулем байт. Таким образом, даже имена файлов с символами новой строки и пробелами обрабатываются правильно.

Однако в большинстве ядер количество символов в команде (а также ее аргументы и параметры) ограничено. В этих случаях xargs разделяет аргументы и выполняет несколько выполнений встроенной команды, чтобы избежать таких ошибок. Также можно указать, сколько аргументов должен иметь каждый вызов.

3

Типичное использование xargs с трубкой и в качестве замены для петли.

Давайте рассмотрим пример, где у вас есть скрипт, в котором в какой-то момент программа выводит список файлов, которые вы должны удалить. Вы можете написать цикл:

for i in $(program); do
    rm ${i}
done

Но вы также можете написать один вкладыш с xargs:

program | xargs rm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .