Что именно xargs?
Как вы используете его?
Когда это будет считаться прагматичным или уместным для этого?
Что именно xargs?
Как вы используете его?
Когда это будет считаться прагматичным или уместным для этого?
xargs берет ввод из своего стандартного ввода для создания команд с этим вводом в качестве аргументов. Это очень полезно, когда следующая команда может принимать только ограниченное количество аргументов и вам нужно обработать большое количество аргументов.
Входные данные обычно разделяются пробелами. Поскольку xargs должен обрабатывать имена файлов очень часто, есть ключ -0 который читает входной разделенный нулем байт. Таким образом, даже имена файлов с символами новой строки и пробелами обрабатываются правильно.
Однако в большинстве ядер количество символов в команде (а также ее аргументы и параметры) ограничено. В этих случаях xargs разделяет аргументы и выполняет несколько выполнений встроенной команды, чтобы избежать таких ошибок. Также можно указать, сколько аргументов должен иметь каждый вызов.
Типичное использование xargs с трубкой и в качестве замены для петли.
Давайте рассмотрим пример, где у вас есть скрипт, в котором в какой-то момент программа выводит список файлов, которые вы должны удалить. Вы можете написать цикл:
for i in $(program); do
rm ${i}
done
Но вы также можете написать один вкладыш с xargs:
program | xargs rm