Я очень смущен этим. Нужны некоторые пояснения.
Пример 1:
pgrep string | xargs ps
Пример 2:
find . | xargs grep whatever
Из примера 1 я собираю его следующим образом:
Найдите строку, которая является частью имени запущенного процесса и возвращает идентификаторы процессов всех совпадений в "xargs ps" → , которые просто присоединяют ps к совпадениям (которые сами являются самими процессами) получить тот же результат, что и:
ps <processid>
Может кто-нибудь объяснить, что действительно делает xargs в этом случае?
Из примера 2 я собираю его следующим образом:
Это, чтобы найти некоторую "строку" рекурсивно из текущего рабочего каталога. Здесь, как работает "xargs"?
Я считал, что "xargs" повторно добавляет данные со стандартного ввода в "аргумент", заданный для xargs (который обычно является командой UNIX сам по себе).
Из справочной страницы xargs():
xargs считывает элементы со стандартного ввода, разделенные пробелами (которые могут быть защищенные двойными или одинарными кавычками или обратная косая черта) или новые строки и выполняет команду (по умолчанию -/bin/echo) один или несколько раз с любым начальные аргументы, за которыми следуют элементы, считанные со стандартного ввода. Пустые строки на стандартном входе игнорируются.