Конвейер Unix
| — мощный инструмент. Он берет вывод одной команды и передает его в качестве входных данных следующей команде.cat files.txt | grep "error"Это работает, потому что grep предназначена для чтения из stdin. Но многие команды устроены иначе. Они ожидают аргументы, а не stdin.
Попробуйте:
echo "file.txt" | rmЭто не сработает, т.к.
rm не читает из stdin. Она ожидает аргументы: rm file.txt.Именно этот пробел и заполняет xargs. Утилита читает данные из stdin и преобразует этот ввод в аргументы для другой команды
echo "file.txt" | xargs rmТеперь это работает, т.к. xargs получил file.txt из stdin и передала его в rm как аргумент.
В этом и заключается вся модель понимания. xargs преобразует stdin в аргументы.
Подробнее в статье.
@usr_bin_linux