HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Файловая структура *nix-систем серьезно отличается от структуры в Windows и заслуживает отдельного внимания. В этом уроке мы подробнее познакомимся с этой темой.</p>
1 <p>Файловая структура *nix-систем серьезно отличается от структуры в Windows и заслуживает отдельного внимания. В этом уроке мы подробнее познакомимся с этой темой.</p>
2 <p>Начнем с базовых понятий:</p>
2 <p>Начнем с базовых понятий:</p>
3 <ul><li>Файловая структура представляет собой<strong>дерево</strong></li>
3 <ul><li>Файловая структура представляет собой<strong>дерево</strong></li>
4 <li>В<strong>узлах</strong>этого дерева находятся<strong>директории</strong>- файлы специального типа</li>
4 <li>В<strong>узлах</strong>этого дерева находятся<strong>директории</strong>- файлы специального типа</li>
5 <li>В<strong>листьях</strong>дерева расположены<strong>файлы</strong></li>
5 <li>В<strong>листьях</strong>дерева расположены<strong>файлы</strong></li>
6 </ul><p>Схематично такое дерево можно показать так:</p>
6 </ul><p>Схематично такое дерево можно показать так:</p>
7 <h2>Директории</h2>
7 <h2>Директории</h2>
8 <p>Понятие "папка" в *nix-системах не используется. Папки здесь называются<strong>директориями</strong>или<strong>каталогами</strong>, хотя по существу эти термины означают одно и то же.</p>
8 <p>Понятие "папка" в *nix-системах не используется. Папки здесь называются<strong>директориями</strong>или<strong>каталогами</strong>, хотя по существу эти термины означают одно и то же.</p>
9 <p>В Windows файловая структура представлена не одним, а несколькими деревьями, так как каждая структура находится на своем диске. В *nix-системах немного по-другому: есть единственное дерево с корнем в /. Все устройства, физические и логические диски находятся внутри этого дерева в виде директорий и файлов.</p>
9 <p>В Windows файловая структура представлена не одним, а несколькими деревьями, так как каждая структура находится на своем диске. В *nix-системах немного по-другому: есть единственное дерево с корнем в /. Все устройства, физические и логические диски находятся внутри этого дерева в виде директорий и файлов.</p>
10 <p>Информация о любом файле или директории доступна по команде stat (сокращение от<em>file system status</em>):</p>
10 <p>Информация о любом файле или директории доступна по команде stat (сокращение от<em>file system status</em>):</p>
11 <p>В Windows и macOS мы привыкли, что имя файла может быть набрано в разных регистрах, и это всегда один и тот же файл. Другими словами, здесь имена<strong>регистронезависимые</strong>.</p>
11 <p>В Windows и macOS мы привыкли, что имя файла может быть набрано в разных регистрах, и это всегда один и тот же файл. Другими словами, здесь имена<strong>регистронезависимые</strong>.</p>
12 <p>Но в *nix-системах ситуация другая - здесь регистр имеет значение. Файлы index.html, Index.html, INDEX.HTML и index.HTML - это разные файлы. Всегда обращайте внимание на регистр, потому что ошибиться довольно легко.</p>
12 <p>Но в *nix-системах ситуация другая - здесь регистр имеет значение. Файлы index.html, Index.html, INDEX.HTML и index.HTML - это разные файлы. Всегда обращайте внимание на регистр, потому что ошибиться довольно легко.</p>
13 <p>Говорят, что в *nix "все является файлом". На нижнем уровне так и есть.<strong>Директория</strong>- это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель.</p>
13 <p>Говорят, что в *nix "все является файлом". На нижнем уровне так и есть.<strong>Директория</strong>- это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель.</p>
14 <p>Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются - с точки зрения кода, это просто запись в файл. На пользовательском уровне директория все же отличается от файла и имеет собственные команды для создания, удаления и модификации.</p>
14 <p>Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются - с точки зрения кода, это просто запись в файл. На пользовательском уровне директория все же отличается от файла и имеет собственные команды для создания, удаления и модификации.</p>
15 <p>В *nix-системах есть<strong>FHS</strong>- базовый стандартизированный набор каталогов. За каждым закреплена какая-то особая роль, например:</p>
15 <p>В *nix-системах есть<strong>FHS</strong>- базовый стандартизированный набор каталогов. За каждым закреплена какая-то особая роль, например:</p>
16 <ul><li>Каталог /etc содержит конфигурацию программ в обычных текстовых файлах. В *nix-системах нет реестра, вся конфигурация лежит в обычных файлах</li>
16 <ul><li>Каталог /etc содержит конфигурацию программ в обычных текстовых файлах. В *nix-системах нет реестра, вся конфигурация лежит в обычных файлах</li>
17 <li>Каталог /home содержит домашние директории пользователей системы, за исключением суперпользователя root, домашний каталог которого обычно находится по адресу /root</li>
17 <li>Каталог /home содержит домашние директории пользователей системы, за исключением суперпользователя root, домашний каталог которого обычно находится по адресу /root</li>
18 </ul><p>Обязательно пробегитесь по странице<a>FHS в Википедии</a>и посмотрите, за что отвечают разные каталоги.</p>
18 </ul><p>Обязательно пробегитесь по странице<a>FHS в Википедии</a>и посмотрите, за что отвечают разные каталоги.</p>
19 <h2>Скрытые файлы</h2>
19 <h2>Скрытые файлы</h2>
20 <p>Не во все директории можно заходить, не все файлы можно читать или менять, и не все программы можно запускать. Так происходит, потому что в *nix-системах развитая система прав, завязанная на пользователей и группы. О ней мы поговорим отдельно позже. Сейчас достаточно знать, что такие ограничения есть. Их можно увидеть в выводе команды ls -l.</p>
20 <p>Не во все директории можно заходить, не все файлы можно читать или менять, и не все программы можно запускать. Так происходит, потому что в *nix-системах развитая система прав, завязанная на пользователей и группы. О ней мы поговорим отдельно позже. Сейчас достаточно знать, что такие ограничения есть. Их можно увидеть в выводе команды ls -l.</p>
21 <p>В отличие от Windows, в *nix-системах отсутствует понятие "расширение файла". Здесь точка считается полноправной частью имени файла. При этом файлы почти всегда именуются так же, как и в Windows - например, hello.mp3. Важно понимать, что именем файла считается вся эта строчка. Нередко встречаются и такие имена: index.html.haml.</p>
21 <p>В отличие от Windows, в *nix-системах отсутствует понятие "расширение файла". Здесь точка считается полноправной частью имени файла. При этом файлы почти всегда именуются так же, как и в Windows - например, hello.mp3. Важно понимать, что именем файла считается вся эта строчка. Нередко встречаются и такие имена: index.html.haml.</p>
22 <p>Есть еще одна существенная разница между Windows и *nix-системами. В обоих случаях скрытые файлы есть, но работают они по-разному:</p>
22 <p>Есть еще одна существенная разница между Windows и *nix-системами. В обоих случаях скрытые файлы есть, но работают они по-разному:</p>
23 <ul><li>В Windows видимость файла - это его свойство, которое можно включить или выключить в настройках (при выключении файл станет скрытым)</li>
23 <ul><li>В Windows видимость файла - это его свойство, которое можно включить или выключить в настройках (при выключении файл станет скрытым)</li>
24 <li>В *nix-системах файл считается скрытым, если его имя начинается с точки. Чтобы скрыть файл, ничего не нужно делать в настройках - достаточно просто добавить точку в начале</li>
24 <li>В *nix-системах файл считается скрытым, если его имя начинается с точки. Чтобы скрыть файл, ничего не нужно делать в настройках - достаточно просто добавить точку в начале</li>
25 </ul><p>Вывести все файлы, включая скрытые, можно командой ls -a:</p>
25 </ul><p>Вывести все файлы, включая скрытые, можно командой ls -a:</p>
26 <p>Обратите внимание на две особые директории:</p>
26 <p>Обратите внимание на две особые директории:</p>
27 <ul><li>Обозначенные точкой (.) - это текущая директория</li>
27 <ul><li>Обозначенные точкой (.) - это текущая директория</li>
28 <li>Обозначенные двумя точками (..) - это директория верхнего уровня</li>
28 <li>Обозначенные двумя точками (..) - это директория верхнего уровня</li>
29 </ul><p>Именно благодаря этой схеме работает команда cd .., которая перемещает нас на уровень выше.</p>
29 </ul><p>Именно благодаря этой схеме работает команда cd .., которая перемещает нас на уровень выше.</p>
30 <p>Кроме обычных файлов, в *nix-системах существует ряд других:</p>
30 <p>Кроме обычных файлов, в *nix-системах существует ряд других:</p>
31 <ul><li><strong>Hard Link</strong>- дополнительное имя для уже существующего файла</li>
31 <ul><li><strong>Hard Link</strong>- дополнительное имя для уже существующего файла</li>
32 <li><strong>Symbolic link</strong>- символическая ссылка. Такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка будет вести в никуда</li>
32 <li><strong>Symbolic link</strong>- символическая ссылка. Такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка будет вести в никуда</li>
33 <li><strong>Socket</strong>- специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни</li>
33 <li><strong>Socket</strong>- специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни</li>
34 </ul><p>Это наиболее важные на начальном этапе знакомства с файловой системой типы файлов. Есть еще и другие типы, но не будем сейчас заострять на них внимание.</p>
34 </ul><p>Это наиболее важные на начальном этапе знакомства с файловой системой типы файлов. Есть еще и другие типы, но не будем сейчас заострять на них внимание.</p>