Использование канала отправляет вывод ( stdout ) первой команды на stdin (вход) дочернего процесса (2-я команда).Упомянутые вами команды не принимают никакого ввода на stdin
.Это будет работать, например, с cat
(и под работой я имею в виду работу, подобную cat
, запускается без аргументов и просто передается по вводимому вами вводу):
ls | cat
Для вашегоприложения, это то, где xargs
входит. Он принимает конвейерный ввод и передает его в качестве аргументов указанной команде.Таким образом, вы можете заставить его работать следующим образом:
ls | xargs du -sb
Остерегайтесь того, что по умолчанию xargs
будет разбивать ввод по пробелам, поэтому, если ваши имена файлов содержат пробелы, это не будет работать так, как вы хотите.Итак, в данном конкретном случае это будет лучше:
du -sb *