Я в значительной степени смущен этим. Нужны некоторые разъяснения.Понимание команды UNIX xargs
Пример 1:
pgrep string | xargs ps
Пример 2:
find . | xargs grep whatever
Из примера 1, я понял, что именно таким образом:
Искать "строка", которая часть имени запущенного процесса и вернуть идентификаторы процессов всех совпадений в «xargs ps» ->, которые просто добавляются пс на матчи (которые сами по себе процесс идентификаторы), чтобы получить тот же результат:
ps <processid>
Может кто-то объяснить, что xargs действительно в этом случае?
Из примера 2, я понял, что именно таким образом:
Это искать какой-то «строка» рекурсивно из текущего рабочего каталога. Вот как работает «xargs»?
Я считал, что «xargs» неоднократно добавляет данные со стандартного ввода в «аргумент», заданный для xargs (который обычно является командой UNIX сам по себе).
От xargs() мужчину страница:
xargs читает элементы из стандартного ввода, разделенных пробелами (которые могут быть защищенных двойными или одинарными кавычками или обратным косой чертой) или символами новой строкой, и выполняет command (по умолчанию is/bin/echo) один или несколько раз с любыми начальными аргументами , за которыми следуют элементы, считанные со стандартного ввода. Пустые строки на стандартном входе игнорируются.
xargs действует как «командный subtitution» (по крайней мере, с Bash). Он превращает многострочные результаты (вертикальные) в однострочный список аргументов токенов (по горизонтали). (Обратите внимание, что вы можете немного фильтровать результаты (используя sed для ex), прежде чем передавать его через xargs). Плюс xargs обрабатывает ошибку «_too much arguments_», которая может быть заражена до ядра Linux 2.6.23 (см. [Wikipedia] (https://en.wikipedia.org/wiki/Xargs)). Вот еще [другая полезная тема] (http://unix.stackexchange.com/questions/24954/when-is-xargs-needed) – Stphane