xargs

Построение списка (списков) аргументов и вызов программы (POSIX)

Синтаксис:

xargs [-itvx] [-n число_аргументов] [-P n] [-s размер] [программа [начальные_аргументы]]

Опции:

-i
(Расширение ЗОСРВ «Нейтрино») Выполнить в "режиме вставки". Программа выполняется один раз для каждого элемента в стандартном потоке ввода. Каждое вхождение {} в начальных_аргументах заменяется аргументом, считываемым из стандартного потока ввода. При отсутствии вхождений {} в начальных_аргументах аргумент дописывается в исходный список.
-n число_аргументов
Максимальное число аргументов, добавляемых в командную строку. Значение число_аргументов по умолчанию – 255.
-P n
(Расширение ЗОСРВ «Нейтрино») Использовать n параллельных команд. Значение по умолчанию – 1.
-s размер
Установить размер максимального буфера команд в символах, включая программу и начальный_аргумент. Значение размера по умолчанию – 4096.
-t
Выполнять отслеживание; выводить каждую программу в стандартный поток ошибок перед выполнением.
-v
То же самое, что параметр -t
-x
Завершить выполнение утилиты, если при использовании указанного числа_аргументов (или числа аргументов по умолчанию) длина командной строки превышает допустимую.
программа
Имя выполняемой программы. Программа должна быть найдена по пути, указанном в переменной среды PATH. Если программа не указана, по умолчанию выполняется утилита echo.
начальные_аргументы
Один или несколько аргументов программы, которые определяются при каждом выполнении программы.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита xargs использует символьные строки, считываемые из стандартного потока ввода, для построения командной строки, которую затем выполняет. Указанная программа и начальные_аргументы помещаются в начало командной строки, а затем указывается некоторое количество считанных символьных строк. Выполнение этого процесса продолжается до конца файла.

Утилита выполняет указанную программу с начальными_аргументами один или несколько раз с использованием параметров, считываемых из стандартного потока ввода. Количество дописываемых строк можно ограничить с помощью опции -n; размер командной строки можно ограничить с помощью опции -s.

Строки разделяются пробелами или символами новой строки, которые могут быть встроены в строки путем ввода перед ними символа \ или заключения в кавычки ("). Для использования кавычек в исходном значении перед ними необходимо ввести символ \.

В результате выбора опции -i команда выполняется для каждой считываемой строки. Вместо стандартного процесса дописывания строки в буфер команд сканируются начальные_аргументы, и каждое вхождение {} заменяется строкой. Если {} отсутствует в начальных_аргументах, строка дописывается в командную строку и выполняется.

При выполнении команды наследуются стандартные потоки вывода и ошибок xargs. В качестве стандартного потока ввода устанавливается управляющий терминал.

Утилита xargs всегда ограничивает общий размер буфера команд 4096 символами. Пример проверки целостности файлов данных на гибком диске (смонтированном как /fd):

find /fd -print | xargs cksum | diff check_file -

В приведенном выше примере утилита find выводит имя каждого файла в смонтированной файловой системе. Утилита xargs группирует имена файлов для cksum с целью минимизации количества выполнений утилиты cksum. После этого выполняется утилита diff, которая позволяет проверить соответствие полученных контрольных сумм суммам, записанным в файле check_file.

Обратите внимание, что к такому же результату приведет выполнение следующей команды:

find /fd -exec cksum {} \; | diff check_file -

Однако cksum необходимо загрузить повторно для каждого файла в /fd.

Примеры:

Использование cmp для определения совпадения файлов в каталоге old_data с файлами в каталоге new_data:

ls old_data | xargs -i cmp old_data/{} new_data/{}

Просмотр файлов в текущем рабочем каталоге и всех подкаталогов в двух столбцах:

find . -print | xargs -n 2 echo

Возвращаемое значение:

0
Все вызовы программы успешно завершены.
>0
Возникла ошибка.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», POSIX

Тематические ссылки:

find




Предыдущий раздел: Утилиты