Иерархия каталогов в операционных системах Linux, macOS и Windows имеет несколько отличий.
В Linux и macOS иерархия каталогов основана на стандарте Filesystem Hierarchy Standard (FHS). Основные директории включают:
— /bin: исполняемые файлы системы;
— /etc: конфигурационные файлы;
— /home: пользовательские домашние каталоги;
— /usr: дополнительные программы и ресурсы.
С другой стороны, в Windows иерархия каталогов отличается. Основные директории включают:
— C:\Windows: системные файлы Windows;
— C:\Program Files: установленные приложения;
— C:\Users: пользовательские профили и данные.
Таким образом, хотя иерархия каталогов в разных ОС имеет общие концепции, ее структура и организация могут отличаться.
Linux урок 9. Файловая система LINUX и ее отличия от WINDOWS
Структура файлов и каталогов в Linux
Linux: диски, разделы, файловая система.
What happens if we put Debian Linux 11 on 11 Years Old MacBook Pro?
С MacOS на Linux: это реально?! — Fedora Linux 35 Workstation GNOME (2022)
Структура каталогов в GNU/Linux (для Павлова Александра)
ЧТО ВЫБРАТЬ Windows VS macOS VS Linux?
Windows, MacOS или Linux? Что выбрать?
Какую операционную систему выбрать программисту? Linux, Windows или Mac OS
Unix VS Linux. UNIX и Unix подобная система Linux в чем отличие? Маленький секрет MAC OS
Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером
Файловая структура
—
Основы командной строки
Файловая структура *nix-систем серьезно отличается от структуры в Windows и заслуживает отдельного внимания. В этом уроке мы подробнее познакомимся с этой темой.
Начнем с базовых понятий:
- Файловая структура представляет собой дерево
- В узлах этого дерева находятся директории — файлы специального типа
- В листьях дерева расположены файлы
Схематично такое дерево можно показать так:
Директории
Понятие «папка» в *nix-системах не используется. Папки здесь называются директориями или каталогами, хотя по существу эти термины означают одно и то же.
В Windows файловая структура представлена не одним, а несколькими деревьями, так как каждая структура находится на своем диске. В *nix-системах немного по-другому: есть единственное дерево с корнем в /
. Все устройства, физические и логические диски находятся внутри этого дерева в виде директорий и файлов.
Информация о любом файле или директории доступна по команде stat
(сокращение от file system status):
# Не обращайте внимание на непонятные для вас данные
# Об их значении поговорим позже
stat .bashrc
File: '.bashrc'
Size: 3771 Blocks: 8 IO Block: 4096 regular file
Device: ca01h/51713d Inode: 259234 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1002/kirill.m) Gid: ( 1002/kirill.m)
Access: 2018-08-27 17:24:11.237498138 +0000
Modify: 2015-08-31 23:27:45.000000000 +0000
Change: 2018-01-22 08:13:27.611966864 +0000
Birth: -
В Windows и macOS мы привыкли, что имя файла может быть набрано в разных регистрах, и это всегда один и тот же файл. Другими словами, здесь имена регистронезависимые.
Но в *nix-системах ситуация другая — здесь регистр имеет значение. Файлы index.html
, Index.html
, INDEX.HTML
и index.HTML
— это разные файлы. Всегда обращайте внимание на регистр, потому что ошибиться довольно легко.
Говорят, что в *nix «все является файлом». На нижнем уровне так и есть. Директория — это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель.
Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются — с точки зрения кода, это просто запись в файл. На пользовательском уровне директория все же отличается от файла и имеет собственные команды для создания, удаления и модификации.
В *nix-системах есть FHS — базовый стандартизированный набор каталогов. За каждым закреплена какая-то особая роль, например:
- Каталог
/etc
содержит конфигурацию программ в обычных текстовых файлах. В *nix-системах нет реестра, вся конфигурация лежит в обычных файлах - Каталог
/home
содержит домашние директории пользователей системы, за исключением суперпользователяroot
, домашний каталог которого обычно находится по адресу/root
Обязательно пробегитесь по странице FHS в Википедии и посмотрите, за что отвечают разные каталоги.
Скрытые файлы
Не во все директории можно заходить, не все файлы можно читать или менять, и не все программы можно запускать. Так происходит, потому что в *nix-системах развитая система прав, завязанная на пользователей и группы. О ней мы поговорим отдельно позже. Сейчас достаточно знать, что такие ограничения есть. Их можно увидеть в выводе команды ls -l
.
В отличие от Windows, в *nix-системах отсутствует понятие «расширение файла». Здесь точка считается полноправной частью имени файла. При этом файлы почти всегда именуются так же, как и в Windows — например, hello.mp3
. Важно понимать, что именем файла считается вся эта строчка. Нередко встречаются и такие имена: index.html.haml
.
Есть еще одна существенная разница между Windows и *nix-системами. В обоих случаях скрытые файлы есть, но работают они по-разному:
- В Windows видимость файла — это его свойство, которое можно включить или выключить в настройках (при выключении файл станет скрытым)
- В *nix-системах файл считается скрытым, если его имя начинается с точки. Чтобы скрыть файл, ничего не нужно делать в настройках — достаточно просто добавить точку в начале
Вывести все файлы, включая скрытые, можно командой ls -a
:
ls -a
. .. .bash_history .bash_logout .bashrc .cache .profile .ssh
Обратите внимание на две особые директории:
- Обозначенные точкой (
.
) — это текущая директория - Обозначенные двумя точками (
..
) — это директория верхнего уровня
Именно благодаря этой схеме работает команда cd ..
, которая перемещает нас на уровень выше.
Кроме обычных файлов, в *nix-системах существует ряд других:
- Hard Link — дополнительное имя для уже существующего файла
- Symbolic link — символическая ссылка. Такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка будет вести в никуда
- Socket — специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни
Это наиболее важные на начальном этапе знакомства с файловой системой типы файлов. Есть еще и другие типы, но не будем сейчас заострять на них внимание.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
-
130 курсов, 2000+ часов теории -
1000 практических заданий в браузере -
360 000 студентов
Наши выпускники работают в компаниях:
Компьютер – это инструмент для работы с информацией, которая хранится в виде файлов. UNIX-подобные операционные системы придерживаются идеи «Всё есть файл», поэтому в качестве файлов также выступают устройства, процессы, директории, сокеты, пайпы – но об этом пока рано говорить. Современная операционная система состоит из десятков и сотен тысяч файлов, которые нужно правильно организовать и предоставить пользователям и программам удобный доступ к ним. Для этого используется файловая система. Но это довольно широкий термин, для понимания которого нужно несколько точек зрения.
С точки зрения пользователей или прикладных программ, файловая система – это место для записи и чтения файлов. Пользователи видят иерархическую структуру организации файлов – внутри директорий хранятся файлы и другие директории, которые также могут хранить файлы и директории. На Windows системах директории обычно называют папками, но папка – это термин, относящийся к графической оболочке операционной системы, а директория – к файловой системе. У папки можно поменять иконку, цвет или добавить описание, чего не сделаешь с директорией. И хотя на линуксах тоже может стоять графический интерфейс, но при общении люди обычно подразумевают не цвет и не иконку какой-нибудь папки, а содержимое и аттрибуты файловой системы, поэтому закрепилось выражение директория.
Структура организации файлов на Windows системах и UNIX-подобных системах несколько отличается. На Windows у вас есть некая файловая система, которой вы назначаете букву C. Внутри этой файловой системы у вас несколько директорий – где-то хранятся файлы пользователей, где-то программы, а где-то файлы операционной системы. Когда вы подключаете флешку или любое другое устройство со своей файловой системой, ей назначается другая буква и через неё вы можете увидеть содержимое этой файловой системы. Структуры этих файловых систем независимы и не пересекаются.
На UNIX подобных системах используется другой подход, называемый FHS – стандартом иерархии файловой системы. По этому стандарту у многих файлов и директорий есть специальные пути, где они должны храниться. Допустим, если на Windows системах вы устанавливаете программу, то все её файлы попадают в директорию C:\Program Files\ИмяПрограммы. А на UNIX-подобных системах большинство программ «размазывается по системе» – запускаемая часть программ попадает в директорию /usr/bin/, ярлыки программ попадают в /usr/share/applications/, настройки в /etc/ и т.д. Кроме удобства, это также помогает с безопасностью при правильных настройках.
Это следует из следующего отличия – корень на UNIX-подобных системах один. Корень, с точки зрения структуры, это начало файловой системы, внутри которого хранятся первые директории. На Windows у каждой файловой системы свой корень – С:, D: и т.п.. А на UNIX-подобных системах каждая файловая система «прикрепляется», правильнее сказать монтируется, в какую-нибудь директорию внутри единого корня. Допустим, у вас может быть корневая файловая система на SSD, файлы пользователя хранятся на отдельном диске, при этом доступ к ним в директории /home, ваши документы, которые вы держите на флешке, могут быть доступны в директории /home/user/Documents. Три разных устройства, три разные файловые системы, но внутри одного корня.
Возвращаясь к теме безопасности, различным файловым системам можно задать различные опции монтирования. Допустим, если у вас /home, где обычно хранятся файлы пользователя, на отдельной файловой системе, вы можете запретить запуск программ на этой файловой системе. Программы обычно лежат в директории /usr/bin/, куда у обычного пользователя нет прав для доступа. В итоге, если какой-то пользователь скачает какой-то вирус к себе в домашнюю директорию (/home/user), он просто не сможет его запустить. Или, допустим, мы знаем, что в /usr/ лежат файлы программ. Если отделить /usr/ на другую файловую систему, то после установки всех программ мы можем убрать право записи в эту файловую систему. В итоге вирус не сможет воспользовавшись уязвимостью программы изменить её запускаемый файл, чтобы добавить в него вредоносный код. А в момент обновления мы просто возвращаем файловой системе право на запись, обновляем программы и опять возвращаем как было.
Как вы, возможно, заметили, я упомянул файловые системы ещё с двух точек зрения – когда я говорил о файловых системах на устройствах и когда говорил про опции на запуск или запись. С точки зрения устройства, файловая система — это способ записи и чтения файлов на устройстве. Недостаточно просто записать файл на диск, нужно ещё определить, куда писать файл, как с ним работать и т.п. Это зависит от типа файловых систем – NTFS, exFAT, EXT4, XFS и т.д.. Файл условно можно разделить на 3 части – сами данные внутри файла, жёсткая ссылка и информация об этом файле – где хранятся данные файла на устройстве, кто владелец, какие права доступа и т.п. Информация о файле называется метаданными и на UNIX-подобных системах хранится на файловых системах в структурах данных, называемых инодами(inode). У каждой иноды есть свой уникальный номер, а чтобы операционная система могла найти иноду по имени файла, она использует жёсткую ссылку (hard link). Подводя итоги, файлы, которые мы обычно видим на компьютере – это жёсткие ссылки, в которых содержится номер иноды, а в иноде содержится информация о файле и его местоположение на устройстве. Этих жёстких ссылок, которые ссылают на одну и ту же иноду, может быть несколько, по сути это способ обращения к одному и тому же файлу по разным именам и с разных директорий, но внутри одной файловой системы, потому что жёсткая ссылка – часть файловой системы. Когда вы удаляете последнюю жёсткую ссылку на файл, файловая система очищает inode запись и помечает местоположение данных файла как свободное, хоть там и лежат данные. Когда появится необходимость записать новый файл, файловая система запишет туда новые данные, но пока этого не произошло, есть вероятность восстановить эти данные.
С точки зрения операционной системы, файловая система – это драйвер, модуль ядра. Этот драйвер предоставляет интерфейс, через который программы могут взаимодействовать с файлами. И в момент монтирования файловой системы вы можете указать специальные опции монтирования, например, чтобы файловая система была только для чтения. На GNU/Linux системах есть возможность установить модули для работы с множеством различных типов файловых систем, включая файловые системы других операционных систем, допустим NTFS. Но на NTFS нет некоторых функций, необходимых для работы линукса – допустим, прав, как в UNIX-подобных системах и т.п., вследствие чего невозможно установить Linux на NTFS, хотя и можно использовать такую файловую систему для хранения пользовательских файлов. Windows системы же не содержат нужных драйверов для работы с файловыми системами EXT4 или XFS, на которых обычно устанавливается Linux. Из-за чего, если у вас 2 операционные системы на компьютере, на Линуксе видны файлы Windows, а чтобы увидеть содержимое линуксовых файловых систем, на Windows надо установить специальные утилиты.
Есть множество различных типов файловых систем, различающихся функционалом и возможностями, но самые используемые на GNU/Linux – ext4 и xfs. Сейчас я рассказал только о том, что такое файловая система, чтобы мы могли рассмотреть работу с файлами в следующих видео. А к теме «Работа с файловыми системами» мы ещё вернёмся.
Пользователь
Linux всегда работает
с единым деревом каталогов, даже если
разные данные расположены на разных
носителях: жестких или сетевых дисках,
съемных дисках, CD-ROM
и т. п. Такое представление отличается
от технологии, применяемой в
Windows, где для каждого
устройства, на котором есть файловая
система, используется свой корневой
каталог, обозначенный литерой, например
«a«, «c«,
«d«
и т. д. Для того чтобы отключать и
подключать файловые системы на разных
устройствах в состав одного общего
дерева, используются процедуры
монтирования и размонтирования. После
того, как файловые системы на разных
носителях подключены к общему дереву,
содержащиеся на них данные доступны
так, как если бы все они составляли
единую файловую систему: пользователь
может даже не знать, на каком устройстве
какие файлы хранятся.
-
В чем отличие каталогов /var и /tmp.
/tmp
— Этот каталог предназначен для
временных файлов: в таких файлах программы
хранят необходимые для работы промежуточные
данные. После завершения
работы программы временные файлы теряют
смысл и должны быть удалены. Обычно
каталог /tmp очищается при
каждой загрузке системы.
/var
Название этого каталога — сокращение
от «variable«
(«переменные» данные). Здесь
размещаются те данные, которые создаются
в процессе работы разными программами
и предназначены для передачи другим
программам и системам (очереди печати,
электронной почты и др.)
или для сведения системного администратора
(системные журналы, содержащие протоколы
работы системы).
В
отличие от каталога /tmp
сюда попадают те данные, которые могут
понадобиться после того, как создавшая
их программа завершила работу.
-
Назначение утилиты pwd.
Команда
pwd (print
working directory)
возвращает полный путь
текущего каталога командной оболочки
— естественно, именно той командной
оболочки, при помощи которой была
выполнена команда pwd.
-
Назначение утилиты cat.
Почти
все утилиты по умолчанию читают и создают
файлы в текущем каталоге. Например,
утилита cat
(concatenation –
конкатенация) —
выводит на экран содержимое файла
«text«:
[student@localhost
student]$ cat
text
В
действительности, командная оболочка,
прежде чем передавать параметр «text»
(имя файла) утилите cat,
подставляет значение текущего каталога
— получается полный путь
к этому файлу в файловой системе:
«/home/student/text«.
Содержимое данного файла утилита
cat выведет на экран.
-
Назначение утилиты ls. Использование ключей –f, -a.
Чтобы
иметь возможность ориентироваться
в файловой системе,
нужно знать, что содержится в каждом
каталоге. Просмотреть
содержимое любого каталога можно при
помощи утилиты ls
(сокращение от англ. «list»
— «список»): Команда
ls без параметров
выводит список файлов
и каталогов, содержащихся в текущем
каталоге.
Утилита
ls принимает один
параметр — имя каталога,
содержимое которого нужно вывести. Имя
может быть задано любым доступным
способом: в виде полного или относительного
пути.
Ключ
–F используется,
чтобы отличать файлы от каталогов.
При наличии этого ключа
ls в конце имени
каждого каталога ставит символ «/»,
чтобы показать, что в нем может содержаться
что-то еще
Для
того чтобы посмотреть полный список
содержимого каталога, и используется
ключ «-a» (all)
Соседние файлы в предмете Операционные системы
- #
- #
- #
- #
- #
Литература
- Современные операционные системы, Э. Таненбаум, 2002, СПб, Питер, 1040 стр., (в djvu 10.1Мбайт) подробнее>>
- Сетевые операционные системы Н. А. Олифер, В. Г. Олифер (в zip архиве 1.1Мбайт)
- Сетевые операционные системы Н. А. Олифер, В. Г. Олифер, 2001, СПб, Питер, 544 стр., (в djvu 6.3Мбайт) подробнее>>
2.1 Файлы
Требования к хранению информации:
-
возможность хранения больших объемов данных
-
информация должна сохраняться после прекращения работы процесса
-
несколько процессов должны иметь одновременный доступ к информации
2.1.1 Именование файлов
Длина имени файла зависит от ОС, может быть от 8 (MS-DOS) до 255 (Windows, LINUX) символов.
ОС могут различать прописные и строчные символы. Например, WINDOWS и windows для MS-DOS одно и тоже, но для UNIX это разные файлы.
Во многих ОС имя файла состоит из двух частей, разделенных точкой, например windows.exe. Часть после точки называют расширением файла. По нему система различает тип файла.
У MS-DOS расширение составляет 3 символа. По нему система различает тип файла, а также можно его исполнять или нет.
У UNIX расширение ограничено размером имени файла в 255 символов, также у UNIX может быть несколько расширений, но расширениями пользуются больше прикладные программы, а не ОС. По расширению UNIX не может определить исполняемый это файл или нет.
2.1.2 Структура файла
Три основные структуры файлов:
-
Последовательность байтов — ОС не интересуется содержимым файла, она видит только байты. Основное преимущество такой системы, это гибкость использования. Используются в Windows и UNIX.
-
Последовательность записей — записей фиксированной длины (например, перфокарта), считываются последовательно. Сейчас не используются.
-
Дерево записей — каждая запись имеет ключ, записи считываются по ключу. Основное преимущество такой системы, это скорость поиска. Пока еще используется на мэйнфреймах.
Три типа структур файла.
2.1.3 Типы файлов
Основные типы файлов:
-
Регулярные — содержат информацию пользователя. Используются в Windows и UNIX.
-
Каталоги — системные файлы, обеспечивающие поддержку структуры файловой системы. Используются в Windows и UNIX.
-
Символьные — для моделирования ввода-вывода. Используются только в UNIX.
-
Блочные — для моделирования дисков. Используются только в UNIX.
Основные типы регулярных файлов:
-
ASCII файлы — состоят из текстовых строк. Каждая строка завершается возвратом каретки (Windows), символом перевода строки (UNIX) и используются оба варианта (MS-DOS). Поэтому если открыть текстовый файл, написанный в UNIX, в Windows, то все строки сольются в одну большую строку, но под MS-DOS они не сольются (это достаточно частая ситуация). Основные преимущества ASCII файлов:
— могут отображаться на экране, и выводится на принтер без преобразований
— могут редактироваться почти любым редактором -
Двоичные файлы — остальные файлы (не ASCII). Как правило, имеют внутреннею структуру.
Основные типы двоичных файлов:
-
Исполняемые — программы, их может обрабатывать сама операционная система, хотя они записаны в виде последовательности байт.
-
Неисполняемые — все остальные.
Примеры исполняемого и не исполняемого файла
«Магическое число» — идентифицирующее файл как исполняющий.
2.1.4 Доступ к файлам
Основные виды доступа к файлам:
-
Последовательный — байты читаются по порядку. Использовались, когда были магнитные ленты.
-
Произвольный — файл можно читать с произвольной точки. Основное преимущество возникает, когда используются большие файлы (например, баз данных) и надо считать только часть данных из файла. Все современные ОС используют этот доступ.
2.1.5 Атрибуты файла
Основные атрибуты файла:
-
Защита — кто, и каким образом может получить доступ к файлу (пользователи, группы, чтение/запись). Используются в Windows и UNIX.
-
Пароль — пароль к файлу
-
Создатель — кто создал файл
-
Владелец — текущий владелец файла
-
Флаг «только чтение» — 0 — для чтения/записи, 1 — только для чтения. Используются в Windows.
-
Флаг «скрытый» — 0 — виден, 1 — невиден в перечне файлов каталога (по умолчанию). Используются в Windows.
-
Флаг «системный» — 0 — нормальный, 1 — системный. Используются в Windows.
-
Флаг «архивный» — готов или нет для архивации (не путать сжатием). Используются в Windows.
-
Флаг «сжатый» — файл сжимается (подобие zip архивов). Используются в Windows.
-
Флаг «шифрованный» — используется алгоритм шифрования. Если кто-то попытается прочесть файл, не имеющий на это прав, он не сможет его прочесть. Используются в Windows.
-
Флаг ASCII/двоичный — 0 — ASCII, 1 — двоичный
-
Флаг произвольного доступа — 0 — только последовательный, 1 — произвольный доступ
-
Флаг «временный» — 0 — нормальный, 1 — для удаления файла по окончании работы процесса
-
Флаг блокировки — блокировка доступа к файлу. Если он занят для редактирования.
-
Время создания — дата и время создания. Используются UNIX.
-
Время последнего доступа — дата и время последнего доступа
-
Время последнего изменения — дата и время последнего изменения. Используются в Windows и UNIX.
-
Текущий размер — размер файла. Используются в Windows и UNIX.
2.1.6 Операции с файлами
Основные системные вызовы для работы с файлами:
-
Create — создание файла без данных.
-
Delete — удаление файла.
-
Open — открытие файла.
-
Close — закрытие файла.
-
Read — чтение из файла, с текущей позиции файла.
-
Write — запись в файл, в текущею позицию файла.
-
Append — добавление в конец файла.
-
Seek — устанавливает файловый указатель в определенную позицию в файле.
-
Get attributes — получение атрибутов файла.
-
Set attributes — установить атрибутов файла.
-
Rename — переименование файла.
2.1.7 Файлы, отображаемые на адресное пространство памяти
Иногда удобно файл отобразить в памяти (не надо использовать системные вызовы ввода-вывода для работы с файлом), и работать с памятью, а потом записать измененный файл на диск.
При использовании страничной организации памяти, файл целиком не загружается, а загружаются только необходимые страницы.
При использовании сегментной организации памяти, файл загружают в отдельный сегмент.
Пример копирования файла через отображение в памяти.
Алгоритм:
-
Создается сегмент для файла 1
-
Файл отображается в памяти
-
Создается сегмент для файла 2
-
Сегмент 1 копируется в сегмент 2
-
Сегмент 2 сохраняется на диске
Недостатки этого метода:
-
Тяжело определить длину выходного файла
-
Если один процесс отобразил файл в памяти и изменил его, но файл еще не сохранен, второй процесс откроет это же файл, и будет работать с устаревшим файлом.
-
Файл может оказаться большим, больше сегмента или виртуального пространства.
2.2 Каталоги
2.2.1 Одноуровневые каталоговые системы
В этой системе все файлы содержатся в одном каталоге.
Однокаталоговая система, содержащая четыре файла, файлов А два, но разных владельцев
Преимущества системы:
-
Простота
-
Возможность быстро найти файл, не надо лазить по каталогам
Недостатки системы:
-
Различные пользователи могут создать файлы с одинаковыми именами.
2.2.2 Двухуровневые каталоговые системы
Для каждого пользователя создается свой собственный каталог.
Двухуровневая каталоговая система
Пользователь, при входе в систему, попадает в свой каталог и работает только с ним. Это делает проблематичным использование системных файлов.
Эту проблему можно решить созданием системного каталога, с общим доступом.
Если у одного пользователя много файлов, то у него тоже может возникнуть необходимость в файлах с одинаковыми именами.
2.2.3 Иерархические каталоговые системы
Каждый пользователь может создавать столько каталогов, сколько ему нужно.
Иерархическая каталоговая система
Почти все современные универсальные ОС, организованы таким образом. Специализированным ОС это может быть не нужным.
2.2.4 Имя пути
Для организации дерева каталогов нужен некоторый способ указания файла.
Два основных метода указания файла:
-
абсолютное имя пути — указывает путь от корневого каталога, например:
— для Windows \usr\ast\mailbox
— для UNIX /usr/ast/mailbox
— для MULTICS >usr>ast>mailbox -
относительное имя пути — путь указывается от текущего каталога (рабочего каталога), например:
— если текущий каталог /usr/, то абсолютный путь /usr/ast/mailbox перепишется в ast/mailbox
— если текущий каталог /usr/ast/, то абсолютный путь /usr/ast/mailbox перепишется в mailbox
— если текущий каталог /var/log/, то абсолютный путь /usr/ast/mailbox перепишется в ../../usr/ast/mailbox
./ — означает текущий каталог
../ — означает родительский каталог
2.2.5 Операции с каталогами
Основные системные вызовы для работы с каталогами:
-
Create — создать каталог
-
Delete — удалить каталог
-
OpenDir — закрыть каталог
-
CloseDir — закрыть каталог
-
ReadDir — прочитать следующий элемент открытого каталога
-
Rename — переименование каталога
-
Link — создание жесткой ссылки, позволяет файлу присутствовать сразу в нескольких каталогах.
-
Unlink — удаление ссылки из каталога