Что такое директория в программировании
Перейти к содержимому

Что такое директория в программировании

Директория (файловая система)

Директория (англ. directory — справочник, указатель), син. каталог, папка — сущность в файловой системе, упрощающая организацию файлов. Типичная файловая система содержит большое количество файлов, и каталоги помогают упорядочить её путём их группировки.

В информатике используется следующее определение: каталог (директория, папка) — поименованная совокупность байтов, на носителе информации, содержащая название подкаталогов и файлов.

Содержание

Термин «Папка»

Термин папка был введён для упрощения файловой системы в глазах пользователя путём аналогии с офисными папками. Он был впервые использован в Mac OS, а в системах семейства Microsoft Windows он появился с выходом Windows 95 [1] . Эта метафора на сегодня используется в большом числе операционных систем: Windows NT, Mac OS, Mac OS X, а также в большом количестве сред рабочего стола для систем семейства UNIX (например, в KDE или GNOME).

В этой терминологии, папка, находящаяся в другой папке, называется подпапка или вложенная папка. Все вместе, папки на компьютере представляют иерархическую структуру, представляющую собой дерево каталогов. Подобная древообразная структура возможна в операционных системах, не допускающих существование «физических ссылок» (DOS и старые версии Windows допускали только аналог символических ссылок — Shortcut (Ярлык)). В общем случае файловая система представляет собой ориентированный граф.

Каталоги в UNIX

Каталог в UNIX — это файл, содержащий несколько inode и привязанные к ним имена [2] . В современных UNIX-подобных ОС вводится структура каталогов, соответствующая стандарту FHS.

Иерархия каталогов в Microsoft Windows

Директория которая не является поддиректорией ни одной другой директории называется корневой. Это значит, что эта директория (каталог) находится на самом верхнем уровне иерархии всех директорий. В Linux системах — корневая директория обозначается как правило «/», в Windows каждый из дисков имеет свою корневую директорию C:\, D:\ и т. д. Каталоги в Windows бывают системные (служебные, созданные ОС) и пользовательские (созданные пользователем). Все каталоги, создаваемые пользователем, по умолчанию имеют одинаковые значки, системные же каталоги обычно имеют разные иконки. Пример системных каталогов: «Рабочий стол», «Корзина», «Сетевое окружение», «Панель управления», каталоги логических дисков и т. п.

В иерархии папок Windows системная папка «Рабочий стол» является директорией верхнего уровня, содержащей все остальные каталоги компьютера. В Windows 4.x она соответствует директории «C:\WINDOWS\Рабочий стол» В папке «Рабочий стол» находятся системные папки «Корзина» («C:\RECYCLE»), «Сетевое окружение», «Мой компьютер» и созданные пользователем папки. В папке «Мой компьютер» находятся системные каталоги дисков всех устройств для хранения информации, подключенных к компьютеру (дисководы гибких дисков, жесткие диски, CD-ROM и т. д.). Каталоги дисков обозначаются именами этих дисков, как в DOS — буквами латинского алфавита от «A:\» до «Z:\». Буквы «A:\» и «B:\», как правило, используются только для дисководов гибких дисков. Начиная с буквы «C:\» идут папки жестких дисков, логических, сетевых и внешних дисков, CD и DVD приводов и т. д.

Примечания

  1. «With the introduction of Windows 95, Microsoft started referring to directories as folders.» (Murach’s C# 2005, страница 34) (англ.)
  2. Всё суть файлы (FreeBook, или Введение в POSIX’ивизм )

См. также

Ссылки

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое «Директория (файловая система)» в других словарях:

Папка (файловая система) — Директория (англ. directory справочник, указатель), син. каталог, папка сущность в файловой системе, упрощающая организацию файлов. Типичная файловая система содержит большое количество файлов, и директории помогают упорядочить её путём их… … Википедия

Директория — Директория  форма организации верховной власти в виде особой коллегиальной формы управления. В отдельных случаях термин также обозначает коллегиальную форму управления вообще, безотносительно к государственной власти. Так, директорией… … Википедия

Subversion — У этого термина существуют и другие значения, см. Subversion (игра). Subversion Логотип Subversion Тип централизованная … Википедия

SVN — Subversion Логотип Subversion Тип система управления версиями Разработчик CollabNet, Inc. Написана на C … Википедия

SubVersion — Логотип Subversion Тип система управления версиями Разработчик CollabNet, Inc. Написана на C … Википедия

Svn — Subversion Логотип Subversion Тип система управления версиями Разработчик CollabNet, Inc. Написана на C … Википедия

GoboLinux — Семейство ОС Linux Последняя версия 014.01 … Википедия

EncFS — Тип файловая система, шифрование Разработчик Valient Gough Операционная система Linux, FreeBSD, Mac OS Последняя версия 1.7.4 (5 сентября 2010) Лицензия G … Википедия

FAT — (англ. File Allocation Table  «таблица размещения файлов»)  классическая архитектура файловой системы, которая из за своей простоты всё ещё широко используется для флеш накопителей. В недавнем прошлом использовалась в дискетах, на… … Википедия

fstab — (сокр. от англ. file systems table)  один из конфигурационных файлов в UNIX подобных системах, который содержит информацию о различных файловых системах и устройствах хранения информации компьютера; описывает, как диск (раздел) будет… … Википедия

Файловая структура — Основы командной строки

Файловая структура *nix-систем серьёзно отличается от структуры в Windows и заслуживает отдельного внимания. Начнём с базовых понятий. Файловая структура представляет собой дерево, в узлах которого находятся директории (файлы специального типа), а в листьяхфайлы.

Кстати, понятие "папка" в *nix-системах не используется, говорят "директория" или "каталог", хотя по существу эти термины означают одно и то же.

В Windows файловая структура представлена не одним, а несколькими деревьями, так как каждая структура находится на своём диске. В *nix-системах — единственное дерево с корнем в / . Все устройства, физические и логические диски находятся внутри этого дерева в виде директорий и файлов.

Информация о любом файле или директории доступна по команде stat (file system status):

В Windows мы привыкли, что имя файла может быть набрано в разных регистрах, и это всегда один и тот же файл, то есть имена регистронезависимы. В *nix-системах регистр имеет значение. Файлы index.html , Index.html , INDEX.HTML и index.HTML — это разные файлы. Всегда обращайте внимание на регистр, потому что ошибиться довольно легко.

macOS в этой ситуации идёт по пути Windows и тоже не учитывает регистр

Говорят, что в *nix "всё есть файл". На нижнем уровне так и есть (почти). Директория — это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель. Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются — для кода это просто "запись в файл". На пользовательском уровне директория всё же отличается от файла и имеет собственные команды для создания, удаления и модификации.

В *nix-системах есть базовый набор каталогов, который стандартизирован (FHS). За каждым закреплена какая-то особая роль. Например, каталог /etc содержит конфигурацию программ в обычных текстовых файлах (в юниксах нет реестра, вся конфигурация лежит в обычных файлах), а каталог /home содержит домашние директории пользователей системы (исключением является суперпользователь root , его домашний каталог обычно находится по адресу /root ). Обязательно пробегитесь по странице https://ru.wikipedia.org/wiki/FHS и посмотрите, что за что отвечает.

Не во все директории можно заходить, не все файлы можно читать или менять, и не все программы можно запускать. В *nix-системах развитая система прав, завязанная на пользователей и группы. О ней мы поговорим отдельно позже. Сейчас достаточно знать, что такие ограничения есть. Их можно увидеть в выводе команды ls -l .

В отличие от Windows, в *nix-системах отсутствует понятие "расширение файла". Точка — полноправная часть имени. Это не значит, что в юниксах невозможно понять тип файла. Это возможно, более того, файлы почти всегда именуются так же, как и в Windows, например hello.mp3, но важно понимать, что вся эта строчка — имя файла. Нередко встречаются и такие имена: index.html.haml . В *nix также есть скрытые файлы, но, в отличие от Windows, это не свойство файла, а определённое имя файла. Все файлы и директории, начинающиеся с точки, считаются скрытыми. Вывести все файлы, включая скрытые, можно командой ls -a :

Обратите внимание на две особые директории, обозначенные "точкой" ( . ) и "двумя точками" ( .. ). Точка означает текущую директорию, а две точки — директорию верхнего уровня. Именно благодаря этой схеме работает команда cd .. , которая перемещает нас на уровень выше.

Кроме обычных файлов, в *nix существует ряд других:

  • Hard Link — дополнительное имя для уже существующего файла.
  • Symbolic link — символическая ссылка, такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка начнёт вести в никуда.
  • Socket — специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни.

Это наиболее важные на начальном этапе знакомства с файловой системой типы файлов. Есть ещё и другие типы, но не будем сейчас заострять на них внимание.

Что такое директория в программировании

Для решения этой проблемы современные файловые системы устроены наподобие вложенных друг в друга папок — каталогов, или директорий (folders, catalogues, directories). Можно представлять файловую систему как большую папку (корневая директория), в которой могут лежать как обычные документы (файлы), так и другие папки (поддиректории). Вложенные папки устроены подобно той самой большой (корневой) папке.

С этой точки зрения файловая система напоминает дерево, у которого каждая веточка подобна всему дереву — у неё есть ствол и другие, более мелкие ветки.

Наглядно представить такое дерево можно с помощью программы tree :

Этот пример показывает, что директория docbook , расположенная в текущей директории, содержит две поддиректории: linux и perl . Первая из них содержит файлы cmdline.docbook , filesystems.docbook , и т. д. Во второй находятся файлы dioph.docbook , factor.docbook и т. д. Пусть нас не смущает, что дерево растёт вниз.

Каждая из строчек вывода показывает не только имя файла, но и его положение по отношению к директории docbook . Это относительные имена файлов (по отношению к текущей директории).

Древовидные структуры чрезвычайно широко применяются в информатике для удобного представления данных. Использование деревьев позволяет на несколько порядков ускорить поиск нужной информации.

При использовании директорий не требуется давать каждому файлу и директории в файловой системе уникальное имя. Достаточно, чтобы уникальными были имена файлов в пределах каждой из директорий. Например, возможно мирное сосуществование файлов /home/borodin_k/.bash_history , /home/antonov_a/.bash_history и /root/.bash_history . В этом примере все три файла называются одинаково — .bash_history . Но первые два находятся в разных поддиректориях ( borodin_k и antonov_a ), расположенных в директории home , а та, в свою очередь, является поддиректорией корневой директории ( / ). Третий файл лежит в поддиректории root корневой директории.

При помощи таких обозначений можно задать положение любого файла или директории в файловой системе. Для этого требуется перечислить, начиная от корневого ( / ), разделяя имена знаками косой черты, все директории в порядке их вложенности, в которых содержится данный файл или директория. Такая номенклатура (способ наименования) файлов называется абсолютной — последовательность вложенных (вроде матрёшек) директорий в отсчитывается от некоего абсолюта — корневой директории.

Абсолютная номенклатура не всегда бывает удобной, особенно если мы много работаем с файлами одной глубоко вложенной директории. Нам пришлось бы называть такие файлы по их длинным именам, различающимся только в их последней части (в том, что идёт после последней косой черты). Есть и другая номенклатура — относительная, где вложенные директории отсчитываются от так называемой текущей директории.

Каждая программа в каждый момент времени находится в определённой директории, который для неё в этот момент времени называется текущим. Если продолжать аналогию с деревьями, программа «сидит» на определённой ветке дерева файлов и способна «перепрыгивать» с одной ветки на другую. Так что если программа «сидит» в директории /home , то обратиться к первому из названных выше файлов она может по относительному имени borodin_k/.bash_history .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *