что это делает? printf '\t%s\n' "$@"

**в zshсоответствует точно так же, как *, но допускает соответствие между /в путях. Таким образом, шаблон **/*.jpgбудет расширяться до пути к любому файлу, который имеет суффикс имени файла .jpgв любом месте текущего каталога или ниже него.

Шаблон **также доступен в bash, если он включен с помощью shopt -s globstar. В оболочке ksh93он тоже есть, если он включен с помощью set -o globstar.

Параметр --предотвращает интерпретацию любого пути (, совпадающего с приведенным выше шаблоном ), который начинается с тире, параметром duкак параметр командной строки. --останавливает синтаксический анализ командной строки duот поиска дополнительных параметров. Это не зависит от оболочки, но является POSIX «служебной директивой » для стандартных утилит.

--можно было удалить, если шаблон подстановки имени файла был изменен на ./**/*.jpg.

Команда даст вам общий размер всех *.jpgфайлов в текущем каталоге или ниже, извлекая строку с общим объемом из выводаdu(запустите команду без | grep total, чтобы увидеть, что duпроизводит ).

-1
09.08.2020, 23:27
1 ответ

Shell printf использует формат столько раз, сколько у него есть аргументов. Таким образом, он имеет встроенный цикл -.

Если бы в строке было три строки %, она использовала бы три аргумента одновременно. В последний раз по умолчанию один или два аргумента будут пустыми/нулевыми, если это необходимо.

"$@" расширяет все текущие аргументы $1, $2,... для разделения строк в кавычках.

В формате печати (первый аргумент)

\t (escaped t )является табуляцией и имеет отступ в 8 пробелов.

%s берет следующий неиспользуемый аргумент и вставляет его как строку.

\n (escaped n )является новой строкой и заставит следующую строку начинаться ниже и в столбце.

man bash— это команда, которая показывает вам все встроенные -команды, включая пару страниц о printf.

man -s 1 printf— это команда, которая показывает, что делает внешняя команда /bin/printf. Он очень похож на (, но не идентичен )встроенному в bash -, но его намного легче найти.

3
18.03.2021, 23:13

Теги

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