2016-06-07 5 views
0

Результат ls - разница между *? Например: ls | du -sh отображает только одну строку для общего размера текущей директории. du -sh * покажет размер каждого файла или subDir в текущем каталоге.Как работает `` работа `` `` ``?

Почему результат не такой же?

+0

Примечание! 'ls' не будет отображать каталог с точкой для, например:« 'путь/.config'» – Noproblem

+0

@Noproblem '*' не будет расширяться, чтобы включать файлы, которые начинаются с '.', либо если вы не используете 'shopt -s dotglob' –

ответ

3

ls | du -sh только сообщает размер ., потому что du не поддерживает чтение имен каталогов со стандартного ввода.
Таким образом, выполнение ls | du -sh удаляет ls и дает тот же результат, что и только работает du -sh.

1

du -sh не читается из stdin. Таким образом, whatever | du -sh - это то же самое, что и du -sh.

du -sh * однако расширен до du -sh file1.txt file2.txt file3.txt где file1.txt, ... являются файлами/каталогами в текущем каталоге.

При умножении файлов на du -sh на выходе будет отображаться сумма для каждого файла, а du -sh будет отображать только сумму для текущего каталога.