Файловая структура *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 мы привыкли, что имя файла может быть набрано в разных регистрах, и это всегда один и тот же файл, то есть имена регистронезависимы. В *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
:
ls -a
. .. .bash_history .bash_logout .bashrc .cache .profile .ssh
Обратите внимание на две особые директории, обозначенные "точкой" (.
) и "двумя точками" (..
). Точка означает текущую директорию, а две точки — директорию верхнего уровня. Именно благодаря этой схеме работает команда cd ..
, которая перемещает нас на уровень выше.
Кроме обычных файлов, в *nix существует ряд других:
Это наиболее важные на начальном этапе знакомства с файловой системой типы файлов. Есть ещё и другие типы, но не будем сейчас заострять на них внимание.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт