Файловая система
Файловая система ОС 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).