Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

С помощью команды

du
("disk usage" — использование диска) вы можете выяснить, какое пространство на диске занято файлами каталога, включая все вложенные каталоги:

$ du

 6 ./recipes/pie

 4 ./recipes/cookie

11 ./recipes

13 .

$

Смысл имен файлов понятен; числа соответствуют количеству блоков на диске (обычно размер блока составляет 512 или 1024 байта) для хранения каждого файла. При использовании каталога число показывает, сколько блоков задействовано всеми файлами этого каталога, включая вложенные каталоги и сам каталог.

Команда

du
имеет флаг
– a
("all" — все), который означает, что требуется выдавать все файлы в каталоге. Если один из них является каталогом, команда
du
сообщает и о нем:

$ du -а

 2 ./recipes/pie/apple

 3 ./recipes/pie/crust

 6 ./recipes/pie

 3 ./recipes/cookie/choc.chip

 4 ./recipes/cookie

11 ./recipes

 1 ./junk

13 .

$

Выходной поток команды

du -a
можно направить по программному каналу через команду grep для поиска каких-либо файлов:

$ du -a | grep choc

 3 ./recipes/cookie/choc.chip

$

Напомним (см. гл. 1), что имя

'.'
— это запись в каталоге, обозначающая сам каталог; оно обеспечивает доступ к каталогу в тех случаях, когда не известно его полное имя. Команда
du
просматривает файлы в каталоге, причем если вы не указали, в каком именно каталоге следует производить поиск, то она выберет
'.'
, т. е. каталог, с которым вы работаете в данный момент. Значит,
junk
и
./junk
— имена одного и того же файла.

Несмотря на то, что каталоги играют в системе важную роль, они представляются в файловой системе как обычные файлы. Эти каталоги можно читать, но в отличие от традиционных файлов их нельзя создавать и в них нельзя писать. Для сохранения целостности системы и файлов пользователей ядро берет на себя контроль за содержимым каталогов.

Теперь представим содержимое каталога в байтовой форме:

$ od -cb

000000 4 ; . \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0

064 073 056 000 000 000 000 000 000 000 000 000 000 000 000

000020 273 ( . . \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0

273 050 056 056 000 000 000 000 000 000 000 000 000 000 000

000040 252 ; p е ц е п т ы \0 \0 \0 \0 \0 \0

252 073 256 243 263 243 255 260 273 000 000 000 000 000 000

000060 230 = j u n k \0 \0 \0 \0 \0 \0 \0 \0 \0

230 075 152 165 156 153 000 000 000 000 000 000 000 000 000

000100 $

Видите имена файлов, "спрятанные" здесь? Формат каталога — это комбинация двоичного и текстового представлений. Каталог строится из фрагментов по 16 байт, причем последние 14 байт здесь содержат имя файла, дополненное символом NUL из ASCII (нулевой код, имеющий значение 0), а первые два байта указывают системе, где находится служебная информация, относящаяся к файлу (мы вернемся к этому вопросу позднее). Каждый каталог начинается двумя записями:

'.'
(точка) и
'..'
(точка-точка).

$ cd
Начальный каталог

$ cd recipes

$ pwd

/usr/you/recipes

$ cd ..; pwd
На один уровень выше

/usr/you

$ cd ..; pwd
Еще на один уровень выше

/usr

$ cd ..; pwd
Еще на один уровень выше

/

$ cd ..; pwd
Еще на один уровень выше

/
Выше некуда

$

Каталог

/
называется корнем файловой системы. Каждый файл системы находится в корневом каталоге или в одном из вложенных в него каталогов, и корневой каталог является родителем самому себе.

Упражнение 2.2

На основании изложенного выше представьте приблизительно действие команды

ls
. Подсказка:
cat . > foo; ls -f foo
.

Упражнение 2.3

(Более сложное) Как действует команда

pwd
?

  • Читать дальше
  • 1
  • ...
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: