Книга: UNIX — универсальная среда программирования
1.3 Продолжаем изучать файлы: каталоги
Разделы на этой странице:
1.3 Продолжаем изучать файлы: каталоги
Система отличит ваш файл с именем junk
от "нужного" файла с тем же именем. Это обеспечивается за счет группировки файлов в каталоги подобно тому, как книги помещаются на полках в библиотеке, так что файлы могут иметь одинаковые имена в разных каталогах без конфликтов.
В общем случае каждый пользователь имеет свой личный каталог, иногда называемый начальным каталогом, который содержит только принадлежащие ему файлы. Входя в систему, вы оказываетесь в вашем личном (начальном) каталоге. Можно сменить каталог, с которым вы работаете (его часто называют рабочим или текущим каталогом), но ваш личный каталог останется тем же. Если не предпринять специальных действий, новый файл, создаваемый вами, попадает в текущий каталог. Так как вначале текущим является личный каталог, ваш файл никак не связан с файлом, имеющим то же имя, в чужом каталоге.
Каталог может содержать и другие каталоги как обычные файлы. Естественным способом представления такой организации каталогов служит дерево файлов и каталогов. В процессе обхода дерева — от корня вдоль нужных ветвей — можно найти любой файл системы. Можно поступить и наоборот: начать в произвольном месте и двигаться по направлению к корню.
Рассмотрим первый способ. Основным нашим средством будет команда pwd
("print working directory" — печать рабочего каталога), которая выведет имена файлов каталога, с которым вы работаете:
$ pwd
/usr/you
$
Команда выведет сообщение о том, что вы находитесь в каталоге you, а сам каталог — в каталоге usr
, который в свою очередь находится в корневом каталоге, традиционно обозначаемом как '/'
. Символ '/'
разделяет компоненты имени: каждый компонент ограничен по длине 14 символами. Во многих системах каталог /usr
содержит имена каталогов всех пользователей. (Даже если ваш личный каталог не /usr/you
, команда pwd
выдаст нечто аналогичное, так что вы сможете следить за последующими примерами.) Введя
$ ls /usr/you
вы получите тот же самый список файлов, который выдает только ls
. Если в команде ls
нет аргументов, то она выводит содержимое текущего каталога; если же ей присвоить имя каталога, то она выдает содержимое указанного каталога. Далее вводите
$ ls /usr
Это приведет к появлению длинного списка имен, среди которых есть и ваш начальный каталог you
.
На следующем шаге попытайтесь распечатать сам корневой каталог. В результате получите ответ, подобный следующему:
$ ls /
bin
boot
dev
etc
lib
tmp
unix
usr
$
(Пусть вас не смущает то, что символ '/'
имеет два назначения одновременно: имя корневого каталога и разделитель в именах файлов.) Большую часть приведенного списка составляют имена каталогов, но unix
на самом деле является файлом, содержащим в готовом к выполнению виде ядро системы UNIX (более подробно об этом см. в гл. 2).
Теперь попробуйте ввести
$ cat /usr/you/junk
(если файл junk
все еще хранится в вашем каталоге). Имя /usr/you/junk
называется путевым, или абсолютным, именем файла. Путевое имя имеет интуитивный смысл: оно представляет путь по дереву каталогов от корня к отдельному файлу. В системе UNIX есть универсальное правило: всюду, где можно использовать обычное имя файла, можно использовать и абсолютное имя.
Файловая система имеет структуру, подобную генеалогическому дереву:
Рис. 1.1: Карта файловой системы UNIX
Ваш файл с именем junk
никак не связан с файлами пользователей paul
или mary
.
Абсолютные имена не слишком впечатляют, если все интересующие вас файлы находятся в вашем каталоге, но если вы работаете совместно с кем-либо или над несколькими проектами одновременно, они становятся весьма удобными. Например, ваши коллеги могут распечатать файл junk
с помощью команды
$ cat /usr/you/junk
Соответственно вы можете выяснить, какие файлы есть у mary
:
$ ls /usr/mary
data
junk
$
или скопировать один из ее файлов:
$ cp /usr/mary/data data
Вы можете редактировать ее файл:
$ ed /usr/mary/data
Если Мэри не хочет, чтобы вы имели доступ к ее файлам, или того же не хотите вы, можно обеспечить защищенность каждого файла и каталога. С этой целью предусмотрены права доступа на чтение-запись-выполнение для владельца, группы и всех остальных пользователей. Право доступа используется для контроля обращения к файлу или каталогу. (Вспомните результат ls -l
.) В нашей системе большинство пользователей, как правило, считают, что открытая система более полезна, чем защищенная, но ваша политика может быть иной; мы вернемся к этому вопросу в гл. 2.
Завершая серию экспериментов с абсолютными именами, попробуйте ввести
$ ls /bin /usr/bin
Не кажутся ли имена вам знакомыми? Когда вы запускаете команду, задавая ее после приглашения, система ищет файл с указанным именем. Вначале поиск ведется в вашем рабочем каталоге (где его, вероятно, найти не удается), затем в каталоге /bin
и, наконец, в /usr/bin
. Нет ничего особенного в командах, подобных cat
или ls
, за исключением того, что для удобства поиска и управления они находятся в нескольких каталогах. Чтобы убедиться в этом, попытайтесь выполнить некоторые из них, используя абсолютные имена:
$ /bin/date
Mon Sep 26 23:39:32 EDT 1983
$ /bin/who
srm tty1 Sep 26 22:20
cvw tty4 Sep 26 22:40
you tty5 Sep 26 23:04
$
Упражнение 1.3
Попробуйте выполнить команду
$ ls /usr/games
а затем что-либо из предложенного ею. Большее удовольствие это доставит вам в нерабочее время.
Смена каталога. Команда cd
Если вы постоянно работаете с информацией, хранящейся в каталоге mary
, у вас может возникнуть желание работать с файлами Мэри, а не со своими. Для этого вам достаточно сменить каталог с помощью команды cd
:
$ cd /usr/mary
Теперь, если использовать имя файла (без /
) в качестве аргумента для команд cat
или pr
, это будет файл из каталога mary
. Смена каталога не влияет на права доступа к файлу: если файл был недоступен из вашего каталога, то таким он и останется.
Обычно бывает удобно сгруппировать свои файлы так, чтобы все файлы, относящиеся к одному проекту, попали в отдельный каталог. Например, если вы надумаете писать книгу, то весь текст вы, естественно, захотите хранить в каталоге с именем book
(книга). Команда mkdir
создает новый каталог:
$ mkdir book
Создать каталог
$ cd book
Перейти в него
$ pwd
Убедиться, что вы попали куда надо
/usr/you/book
Работа над книгой (прошло несколько минут)
...
$ cd ..
Подняться на один уровень в файловой системе
$ pwd
/usr/you
$
Обозначение '..'
относится к "родителю" того каталога, с которым вы работаете в данный момент, а именно к каталогу, расположенному на один уровень ближе к корню. Обозначение '.'
является синонимом текущего каталога.
$ cd
Возврат в личный каталог
Команда вернет вас в ваш начальный каталог, т.е. в каталог, в который вы попадаете при входе в систему.
После того как книга опубликована, можно почистить каталог. Чтобы удалить каталог book
, удалите все содержащиеся в нем файлы (быстрый способ выполнения этой операции мы вскоре покажем), затем перейдите в родительский каталог для book
и задайте команду
$ rmdir book
Команда rmdir
удаляет только пустые каталоги.
- Зачем изучать физическую структуру базы данных?
- Файлы базы данных InterBase
- Файлы *.GDB изнутри
- 12.2. Файлы конфигураци исервера
- Как вернуть случайно удаленные файлы?
- Как записать файлы на компакт-диск?
- Как сделать, чтобы в папке сначала отображались самые новые файлы?
- Перемещать файлы удобнее, если запустить два экземпляра Проводника и разместить их окна бок о бок. Можно ли это делать а...
- Файлы без расширения, как правило, текстовые. Как сделать, чтобы при двойном щелчке кнопкой мыши они открывались в Блокн...
- На установочном диске Windows много файлов с расширением CAB. Что это за файлы?
- Как сохранить все файлы при переустановке?
- При попытке войти в систему Пользователю1 выдается предупреждение, что загрузился временный профиль и все сделанные изме...