что "общее количество" означает в ls - al
Большой вопрос, это означает, что Вы хотите уделить внимание деталям. Я проиллюстрирую с примерами. В соответствии с моим корневым каталогом /home/el
существует каталог, названный tmpdir с файлами под ним. Я изменяюсь на тот каталог и делаю ls -al
el@angeliqe ~/tmpdir $ ls -al
total 20
drwxrwxr-x 4 el users 4096 Dec 21 11:45 .
drwx--x--x 9 el users 4096 Dec 21 11:45 ..
drwxrwxr-x 2 el users 4096 Dec 21 11:45 dirWithFiles
drwxrwxr-x 2 el users 4096 Dec 21 11:44 emptydir
-rw-rw-r-- 1 el users 182 Dec 21 11:45 myfile.txt
Это говорит 'общие 20'. Это переводит в: "tmpdir использует 20K пространства на диске для всех каталогов и файлов".
с-h опцией Вы говорите этому давать его Вам в человекочитаемой форме:
el@angeliqe ~/tmpdir $ ls -alh
total 20K
drwxrwxr-x 4 el users 4.0K Dec 21 11:45 .
drwx--x--x 9 el users 4.0K Dec 21 11:45 ..
drwxrwxr-x 2 el users 4.0K Dec 21 11:45 dirWithFiles
drwxrwxr-x 2 el users 4.0K Dec 21 11:44 emptydir
-rw-rw-r-- 1 el users 182 Dec 21 11:45 myfile.txt
Интересно отметить, что каталог ни с чем в нем также поднимает пространство 8K в моем случае emptydir
ничего не имеет в нем, но показывает использующий 8K
el@angeliqe ~/tmpdir/emptydir $ ls -al
total 8
drwxrwxr-x 2 el users 4096 Dec 21 11:44 .
drwxrwxr-x 4 el users 4096 Dec 21 11:45 ..
Добавление пустого каталога доказывает, что каталоги поднимают 4K:
el@angeliqe ~/tmpdir/emptydir $ ls -alh
total 12K
drwxrwxr-x 3 el users 4.0K Dec 21 11:54 .
drwxrwxr-x 4 el users 4.0K Dec 21 11:45 ..
drwxrwxr-x 2 el users 4.0K Dec 21 11:54 blah
Другая команда для исследования du
:
el@angeliqe ~/tmpdir/emptydir $ du
4 ./blah
8 .
Кроме того, можно посмотреть на размеры файла на определенную глубину:
el@angeliqe ~ $ du -h --max-depth=1
12K ./.ssh
4.0K ./my_recycle_bin
8.0K ./.vim
13G ./gnuoctbluehost
24K ./tmpdir
48K ./.subversion
152K ./.cpan
13G .
el@angeliqe ~ $
Необходимо поместить двойные кавычки вокруг всей переменной и замен команды.
set -- "$(basename -- "$file")"
Если Вы позволяете значению переменной быть разделенным на слова и эти слова, которые будут рассматривать как шаблоны шарика, нет никакого возвращения. Вы больше не можете говорить, каким количеством пробел был там или были ли имена файлов результатом подстановочного расширения. Вы не можете возвратить гамбургер в корову, таким образом, необходимо удостовериться, что не отправили корову в скотобойню во-первых.
У Вас есть несколько опций,
Используйте "$" * вместо этого "$"
set -- $(basename "$file")
printf "%s\n" "$*"
Заключите в кавычки замену команды и переменную,
set -- "$(basename "$file")"
printf "%s\n" "$@"
set -- "xy "$file""
по сравнению сset -- "$(basename -- "$file")"
. Таким образом, когда замена команды играет роль, удар может интерпретировать вложенные кавычки "естественно"? – iruvar 13.11.2013, 02:44$(…)
форма замены команды а не устаревающие одинарные левые кавычки). – Gilles 'SO- stop being evil' 13.11.2013, 02:51