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