Выбрать главу
Рис. 1-12

Каталоги

Если команда «ls» подается без операндов (т.е. если она подана без аргументов вообще или только с аргументами-ключами), результатом станет вывод списка имен всех файлов в текущем каталоге (Рис. 1-13).

Рис. 1-13

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

Файлы организуются в файловую структуру, задающую их логическое расположение. Файловая структура открытых ОС является иерархической: файлы содержатся в особых файлах – каталогах, каталоги, в свою очередь, могут содержаться в других каталогах и т.д. Вершиной файловой структуры служит каталог «/», называемый корневым каталогом файловой структуры.

В открытых ОС логическая файловая структура независима от физического размещения файлов на дисках или других носителях. Соответствие физического носителя или его части (раздела жесткого диска) фрагменту файловой структуры системы устанавливается в ходе монтирования этого носителя.

Несъемные носители (например, жесткие магнитные диски), как правило, монтируются в ходе загрузки ОС по предзаданному сценарию, а демонтируются, соответственно, в ходе разгрузки. Съемные носители должны монтироваться после их установки в привод и демонтироваться перед физическим снятием. Монтирование носителя – административная процедура, но на настольных машинах монтирование съемных носителей, как правило, делегируется пользователю, а некоторые современные ОС (в частности, «ГНУ/Линукс») позволяют его автоматизировать.

Рис. 1-14

Файловую структуру можно представить в виде дерева с корнем в корневом каталоге и вершинами во вложенных каталогах. На рис. 1-14 пример такого дерева изображен в частично развернутом виде.

Созданный Алисой файл «1й_файл», так же, как и каталог «tmp/», который выше Алиса наблюдала в выводе команды «ls», поданной без параметров, находятся в каталоге «alice/», который, в свою очередь, находится в каталоге «home/», находящемся в корневом каталоге файловой структуры. Знак «косая черта» («/», часто читается «слэш») завершает имя каталога при указании полного или относительного имени файла.

В выводе команды «ls -l» файлы-каталоги отличаются от обычных файлов тем, что в первой позиции поля «тип файла и права доступа» стоит буква «d». Тип обычного файла обозначается символом дефиса («-»).

Полное (или абсолютное) имя файла однозначно идентифицирует конкретный файл в системе. Краткое имя однозначно идентифицирует файл лишь в отдельном каталоге. В вышеприведенном примере каталоги «/bin/tmp/» и «/home/alice/tmp/» имеют совпадающие краткие имена, но различные пути к ним (путем называется часть полного имени, исключающая краткое имя); соответственно, различаются и их полные имена.

Полное (абсолютное) имя в документации и литературе всегда указывается с ведущим слэшем (т.е. начинается с «/»); таким же образом его следует указывать и в качестве аргумента команд ОС.

Ранее, когда Алиса знакомилась с командами «ls», «touch», «rm», она указывала имя файла «1й_файл» без ведущего слэша (и без указания каталога вообще). Такое именование называется относительным. При относительном указании имени файла путь к нему указывается относительно текущего каталога. Текущий (рабочий) каталог оболочки определен в каждый момент времени (при вводе каждой команды).

При регистрации пользователя текущим становится домашний каталог пользователя, определенный администратором при создании учетной записи этого пользователя. Обычно домашние каталоги пользователей создаются в каталоге «/home/» с именами, совпадающими с регистрационными именами пользователей. Для пользовательницы Алисы, таким образом, домашним будет каталог «/home/alice/» (см. соответствующую вершину дерева файловой структуры, изображенной на рис. выше). Узнать свой домашний каталог пользователь может в любой момент, подав команду «echo ~» (описание команды «echo» см. в Справочных материалах).

В простейшем случае относительное имя файла совпадает с его кратким именем. В примерах с командами «ls», «touch», «rm» выше все имена указывали на файлы в текущем каталоге, которым был домашний каталог Алисы (полное имя этого каталога «/home/alice/»), поэтому выводилась информация о файлах, создавался файл и удалялся файл в этом каталоге.

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

Создать каталог можно, командой «mkdir», а удалить пустой (не содержащий файлов) каталог – командой «rmdir» («mkdir» – это сокращение от англ. словосочетания «make directory» («создать каталог»), а «rmdir» – от «remove directory» («удалить каталог»)) с именем каталога в качестве параметра (Рис. 1-15).

Рис. 1-15

Сделать каталог текущим можно, командой «cd» (сокращение от англ. словосочетания «change directory» («сменить каталог»)) с именем каталога в качестве параметра (Рис. 1-16).

Рис. 1-16

Обратите внимание, что, после того, как Алиса сменила текущий каталог, его краткое имя появилось в ее подсказке. В вашей системе это может быть и не так, но узнать полное имя текущего каталога можно в любой момент, подав команду «pwd» без параметров.