Файловая система ОС Unix имеет
иерархическую (древовидную)
структуру. В вершинах дерева
находятся каталоги (используют
также термины - справочники,
директории), содержащие списки
файлов. Эти файлы в свою очередь
могут быть либо снова каталогами,
либо обычными файлами, либо
специальными файлами,
представляющими различные
устройства ввода-вывода.
/
|
-----------------------------------------------------------
| | | | | | | | | |
bin boot dev etc lib mnt sys . . . tmp unix usr
Kорневой каталог имеет имя
"/". Он обычно содержит
каталоги:
bin |
для наиболее
используемых команд; |
usr |
каталоги и обычные
файлы, содержащие информацию,
привлекаемую при решении задач
пользователя; |
dev |
для специальных
файлов, представляющих
устройства (дисплеи, диски...); |
etc |
для хранения команд
администратора системы; |
lib |
важнейшие библиотеки;
|
mnt |
для подключения
(примонтирования) новых
файловых систем; |
sys |
средства для
изменения конфигурации
системы; |
tmp |
для хранения
временных файлов; |
usr |
каталоги и обычные
файлы, содержащие информацию,
привлекаемую при решении задач
пользователя. |
А также обычные (выполняемые)
файлы:
unix |
ядро; |
boot |
загрузчик. |
Полные имена файлов будут: /bin, /usr,
..., /unix, /boot.
В свою очередь эти каталоги могут
содержать каталоги следующего
уровня. Например, каталог "usr",
кроме прочего, содержит каталоги:
bin |
хранит
дополнительные команды; |
games |
игры; |
include |
хранит фрагменты
системных программ; |
lib |
хранит
дополнительные библиотеки. |
полные имена этих файлов будут:
/usr/bin /usr/games /usr/include /usr/lib
Если в каталоге "/usr/include"
содержится каталог "sys",
который в свою очередь, содержит
каталог "conf", то полное имя
файла "conf" будет
/usr/include/sys/conf
Формальным признаком полного
имени является то, что оно
начинается со слэша ("/").
Относительное имя начинается не с
"/", и определят имя
относительно своего
местоположения. Если
(пользователь?) в данный момент
находится в директории /usr файловой
системы, то он может обратиться к
этому же файлу по относительному
имени
include/sys/conf
Есть два специальных имени:
. |
это "имя"
текущего директория и |
.. |
это "имя"
родительского директория (т.е.
директория, |
находящегося на ступеньку выше
данного на пути к корню).
В качестве имени файла как
правило может использоваться любая
последовательность из букв, цифр и
подчеркиваний. Могут
использоваться и другие символы,
однако ряд этих символов при
использовании в имени требует
специального экранирования. (Лучше
не пользоваться специальными
символами в именах - иногда это
может привести к сложностям в
обращении к таким именам, поскольку
спецсимволы могут иметь в shell
некоторый специальный смысл).
В ряде систем длина имени
ограничивается 14-ю символами (этого
ограничения желательно
придерживаться для переносимости
файлов), однако в других системах
допускаются более длинные имена -
например, до 256 символов.
В общем случае не являются
обязательными и какие-то
расширения в именах. Хотя ряд
команд требуют наличия некоторых
фиксированных расширений в именах,
например расширение ".с" для
исходных файлов для Си-компилятора.
КСТАТИ. В ОС UNIX большие и
маленькие буквы воспринимаются как
различные, поэтому "FILE",
"file" и "File" - это три
различных имени!
ВАЖНОЕ ЗАМЕЧАНИЕ.
Отдельные части файловой
системы могут находиться на
различных физических
устройствах, например, на
нескольких жестких и гибких
дисках (или в различных частях
одного диска). Соответствующие
фрагменты (поддеревья файловой
системы) монтируются
(присоединяются) в единую
файловую систему командой mount
(обычно это функция
администратора системы), после
чего пользователь может
обращаться к любым доступным
файлам, при этом в имени никак
не отражается устройство, на
котором файл находится или
создается (т.е. никаких
"A:"). |
Командный язык ОС Unix - shell
оперирует с командами. Более
подробно о нем разговор далее, а
пока рассмотрим несколько команд
работы с файловой системой.
Например, в результате выполнения
команды
ls -l /usr
где ls - имя команды; -l - флаг,
говорящий о том, что выдача должна
быть в длинном формате; /usr -имя
каталога, который надо echo. На экран
будет выведено
drwxrwxr-x 2 root 2048 nov 3 12:11 bin
-rwxr--r-- 1 root 861 may 11 20:11 boot
drwxrwxr-x 2 root 1024 jan 9 11:55 dev
drwxrwxr-x 1 root 4096 may 11 20:11 dos
drw-r--r-- 3 root 4096 nov 17 12:01 include
drwxr-xr-x 7 root 480 nov 17 12:30 lib
Первая строка означает, что это
каталог (d-directory), где первая триада
"rwx" разрешает владельцу
каталога: r - читать, w - писать и х -
выполнять (более точно, для файлов
типа каталог w означает разрешение
создавать файлы в каталоге и
удалять их из него, а х разрешает
доступ к файлам каталога); членам
группы, в которую входит владелец,
также разрешены все три операции.
Последняя триада отражает права
доступа прочих пользователей,
которым разрешено только читать и
выполнять (запрещено писать в этот
файл, т.е. изменять содержимое
каталога).
Далее, 2 - это число связей файла
(т.е. где-то в системе есть еще одно
имя, связанное с этим файлом); root -
имя владельца, 2048 - число символов в
файле, nov 3 12:11 - дата и время создания
или последней модификации файла (3
ноября в 12-11); bin - имя файла (каталог
команд).
Во второй строке указан обычный
текстовый файл (boot), который прочие
пользователи могут только читать.
Команда "pwd" (без флагов и
аргументов) сообщает
местоположение пользователя в
файловой системе. С ее помощью
выводится полное имя текущего
каталога.
При входе в систему пользователь
оказывается в определенной заранее
вершине дерева. Пусть, например, это
будет каталог "/usr".
Изменить местонахождение можно
командой "cd <каталог>". Так можно
перейти в каталог /usr/include/sys, набрав
команду
cd /usr/include/sys
здесь указано полное имя , или
cd include/sys
здесь указано относительное имя.
Отличительный признак
относительного имени - отсутствие
символа "/" в начале.
Команда "cd .." осуществит
переход вверх на предыдущий
уровень. Из "/usr/include/sys"
произойдет переход в "/usr/include",
а команда "cd" (т.е. без
параметров) осуществит переход в
начальный директорий пользователя
(т.е. директорий, в котором
пользователь оказывается при входе
в систему).
Создать новые каталоги можно с
помощью команды
mkdir <имена создаваемых каталогов>
Так команда "mkdir err new" создаст
в данном каталоге два новых
каталога с относительными именами
"err" и "new".
Удалить пустой (не содержащий
файлов) каталог можно с помощью
команды
rmdir <имена удаляемых каталогов>
Удалить обычный файл можно
командой
rm <имена удаляемых файлов>
Наиболее естественный для
пользователя способ создания
файлов - это использование
текстового редактора "ed" или
экранного редактора "red" (а
также стандартных "vi" и
"ех", или многочисленных
прочих "фирменных").
В ОС Unix около 200 базовых команд -
инструментальных средств,
позволяющих пользователю решать
многие свои проблемы, не прибегая к
программированию на языках типа Си
или использованию специальных
пакетов.
Командой
rm файл-1
можно удалить "файл-1".
Командой
rmdir файл-1
можно удалить "файл-1", если
это директорий, причем пустой (т.е.
не содержит файлов).
Командой
mv старое-имя новое-имя
можно переназвать файл.
Командой
cp старое-имя новое-имя
можно скопировать файл (сохранив
также старый).
Очень важна команда
chmod 755 расчет
которая превращает файл
"расчет", подготовленный в
редакторе, в командный, иначе
"расчет" при попытке вызова не
будет выполнятся. Набор цифр здесь
соответствует триадам двоичных
представлений восьмеричных чисел и
триадам прав доступа к файлам (rwx -
чтение, запись, выполнение). То есть
определяет, что создатель расчета
может не только выполнить или
распечатать текст этого расчета, но
и вносить в него изменения (7:111 - rwx).
А члены группы и прочие
пользователи могу только читать и
выполнять, но не могут изменять
этот расчет (55:101101 - r-xr-x).
|