Файловая система

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

Корневой каталог имеет название "/". Обычно он содержит следующие каталоги:

КаталогОписание
binСодержит основные системные команды и утилиты.
usrХранит файлы и каталоги, связанные с приложениями и данными пользователей.
devСодержит специальные файлы, представляющие различные устройства, такие как дисплеи, диски и прочее.
etcПредназначен для файлов конфигурации системы.
libСодержит важные системные библиотеки.
mntИспользуется для монтирования внешних файловых систем.
sysПредоставляет инструменты для изменения системной конфигурации.
tmpПредназначен для временного хранения файлов.

А также в системе присутствуют обычные (выполняемые) файлы:

ФайлОписание
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 файловой системы, то для обращения к файлу "conf" он может использовать относительный путь include/sys/conf.

Также существуют два специальных имени:

Эти имена используются для навигации по файловой системе.

В имени файла можно использовать буквы, цифры и символы подчеркивания. Хотя допускается использование и других специальных символов, их использование может потребовать экранирования. Чтобы избежать возможных проблем при работе с файлами, рекомендуется не использовать специальные символы в именах файлов, так как в командной оболочке (shell) они могут интерпретироваться особым образом.

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

В UNIX-системах не существует строгих правил относительно расширений файлов. Тем не менее, некоторые программы могут требовать определенные расширения для своей работы. Например, исходные файлы для компилятора языка С обычно имеют расширение ".c".

Важно отметить, что в UNIX-системах различие между строчными и прописными буквами существенно. Так, "FILE", "file" и "File" будут рассматриваться как три разных имени файла.

Замечание. Отдельные части файловой системы могут находиться на различных физических устройствах, например, на нескольких жестких и гибких дисках (или в различных частях одного диска).
Соответствующие фрагменты (поддеревья файловой системы) монтируются (присоединяются) в единую файловую систему командой mount (обычно это функция администратора системы), после чего пользователь может обращаться к любым доступным файлам, при этом в имени никак не отражается устройство, на котором файл находится или создается (т.е. никаких "A:").

Командный язык ОС Unix - shell оперирует с командами. Более подробно о нем разговор далее, а пока рассмотрим несколько команд работы с файловой системой.

Например, в результате выполнения команды:

ls -l /usr

где ls - имя команды; -l - флаг, говорящий о том, что выдача должна быть в длинном формате; /usr - имя каталога, который надо вывести. На экран будет выведено:

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 - писать и x - выполнять. Далее следуют пояснения к остальной части строки, включая дату, время и имя файла.

Во второй строке указан обычный текстовый файл (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).