Как проверить установленную версию ядра Linux в Debian?

Одно верно, другое нет.

du -sh *

(должно быть du -sh -- *, чтобы избежать проблем с именами файлов, начинающимися с-)

полагается на оболочку для расширения шара *; duвидит все не -скрытые файлы и каталоги в текущем каталоге как отдельные аргументы. Это правильно обрабатывает специальные символы.

ls | xargs du -sh

полагается на xargsдля обработки вывода ls. xargsразделяет ввод на пробелы (по крайней мере пробел, табуляция и новая строка, больше с некоторыми реализациями ), также понимает некоторую форму кавычек и запускаетdu(один (даже для пустого ввода¹ )или более вызовов )с каждой отдельной строкой, разделенной пробелами -, в качестве отдельных аргументов.

Оба кажутся эквивалентными, если ваш текущий каталог не содержит файлов с пробелами, одинарными кавычками, двойными кавычками или символами обратной косой черты в их именах, и если файлов достаточно (, но хотя бы один ), который xargsвыполняет только один duвызов, но это не так.

С точки зрения эффективности, du -sh *использует один процесс, ls | xargs du -shиспользует как минимум три. Существует один сценарий, в котором конвейерный подход будет работать, в то время как glob не будет :, если у вас слишком много файлов в текущем каталоге, оболочка не сможет запустить duсо всеми их именами за один раз., но xargsбудет выполняться duстолько раз, сколько необходимо, чтобы охватить все файлы, и в этом случае вы увидите несколько строк, а файлы с более чем одной жесткой ссылкой могут быть учтены несколько раз.

См. также Почему *не *parse `ls `?


¹ Если в текущем каталоге нет скрытого файла, отличного от -, du -sh -- *либо завершится с ошибкой вашей оболочки, либо с некоторыми оболочками, такими как bash, запустите duс литералом *в качестве аргумента и duбудет жаловаться на то, что этот файл *не существует.

В то время как с ls | xargs du -sh --, большинство xargsреализаций (, за исключением некоторых BSD ), будут запускаться duбез аргументов и, таким образом, указывать использование диска в текущем каталоге (, а также включая диск использование самого файла каталога и всех скрытых файлов и каталогов в нем)

0
28.04.2020, 15:34
0 ответов

Теги

Похожие вопросы