April 9, 2025

Урок 1. Файловая система. Каталоги. Путь (абсолютный и относительный).


Материал написан автором канала Пингвины летят в Калифорнию

📚 | Оглавление


📁| Файловая система

В Linux все состоит из файлов. Устройства, папки тоже являются файлами, то есть папка в Linux это файл, который хранит информацию о других файлах и папках, расположенных в нем.
Файловая система Linux начинается с корневого каталога, который обозначается /
Если что, папка, каталог, директория - это все одно и то же. Я буду использовать разные варианты, чтобы тавтология не была такой частой.
Все остальные каталоги присоединены к корневой директории. Если проводить аналогию, то структура директорий похожа на дерево.

В корневом каталоге содержатся каталоги, каждый из которых выполняем определенную функцию. Рассмотрим некоторые из них:

/etc — здесь хранятся основные файлы настроек программного обеспечения.
/home - каталог для хранения файлов и настроек пользователей системы, кроме администратора
/root — домашняя директория root пользователя (администратора).
/tmp — для временных файлов. Каталог очищается при каждой перезагрузке. Не стоит там хранить важные файлы.

Есть еще каталоги, но мы их не будем рассматривать.
Основную работу будем вести в папке /home или /root в зависимости от того, под каким пользователем вы работаете.

Крайне не рекомендую менять что-либо в каталогах, о которых ничего не знаешь. Имея права root можно обрушить систему, просто удалив «ненужный файл или каталог.»

В каталогах могут быть подкаталоги. Например /home/username . Директории могут содержать другие подкаталоги и файлы. Файлы - могут содержать информацию.

Адрес файла может быть абсолютным (т.е. содержит весь путь от корня до файла например /home/user/.bashrc) или относительным (тогда он читается от текущего каталога. Например .ssh/authorized-keys говорит о том, что файл authorized-keys находится в подкаталоге .ssh текущего каталога).

Еще стоит отметить, что символ "/" обозначает не только корневую директорию, но и что что указанный файл является директорией. По сути можно сказать что коревая директория не имеет названия в системе, и поэтому отображается как <пустота> и /.
Как следствие из вышесказанного, отсутствие любых символов "/" в имени файла обозначает, что они находятся в текущем каталоге.

Кроме этого, существуют специальные символы для работы с относительными каталогами:
./ - текущий каталог
../ - вышестоящий каталог ../data - обозначает , что каталог data находится на одном уровне с текущим (../.. выше текущего на 2 уровня)
~/ - домашний каталог текущего пользователя. Обычно это /home/<user> - где <user> - имя текущего пользователя в системе, или /root для root пользователя.

Для опытных, и новичкам на будущее: с этими обозначениями нужно быть аккуратнее. Они могут не корректно работать, если вы используете их в скриптах


Имена могут содержать расширение (тип файла) например file.txt, arch.tar.gz, image.png и т.д.

Ну, и теперь самое главное:

  1. В отличие от windows имена файлов и каталогов регистрозависимые. Т.е. LOG Log log lOg - разные имена.
  2. Линукс допускает имена с пробелами и русские, но их использование крайне не желательно, особенно пробелов.
  3. Расширения файлов нужны для облегчения понимания о содержимом файла. Но не гарантируют, что файл имеет именно указанное содержимое. Например вы можете создать файл MyDickPic.jpeg и записать в него свой приватник))))
  4. Имена файлов и каталогов могут содержать различные спецсимволы, типа !#@, но рекомендую использовать только латинские буквы, цифры, знак подчеркивания и точку.

Так же в системе вы увидите что некоторые файлы и каталоги начинаться с точки. Так обозначаются "скрытые" файлы и каталоги.


📂 | Перемещение по каталогам

Для перемещения по каталогам есть команда cd (сокращение от Change Directory)
На следующем уроке мы разберем синтаксис команд более детально, поэтому о некоторых моментах вы узнаете на следующем уроке.

cd  /home/<username>  #  - перейти в указанный каталог (указан абсолютный путь).
cd work   #  - перейти в каталог work, находящийся в текущем каталоге (относительный путь)
cd ..   #  - переход в вышестоящий каталог.
cd ../../work  #  - сначала подняться на два уровня, затем перейти в каталог work.
cd -  # (минус) переход в предыдущий каталог.

Если выполнить cd без параметров - попадете в домашний каталог. Очень удобно.

Как узнать в какой директории вы находитесь сейчас?(Вдруг вы заблудились)
Для этого есть специальная команда:
pwd (сокращение от print working directory).


Так же узнать текущую (рабочую) директорию можно из приглашения командной стоки, но мы его разберем в следующий раз
Если вы попытаетесь перейти в каталог, которого не существует - получите сообщение об ошибке (и это логично).


✏️ | Создание каталогов.

mkdir (сокращение от make directory) например:

mkdir work   # - создаст каталог work в текущем каталоге.
mkdir work/crypto   # - создаст каталог crypto в каталоге work, который находится в текущей директории.

ВАЖНО! если каталога work не существует, то терминал выдаст ошибку и папка не создастся. 

В командах выше мы применяли относительный путь. Это значит что указанные каталоги создаются ОТНОСИТЕЛЬНО текущего (рабочего) каталога. Например в домашней директории root'а и другого пользователя.

Можно использовать абсолютный путь. В таком случае папка будет создана, при условии что все остальные элементы пути существуют.

mkdir /root/work  #  - создаст католог work ТОЛЬКО в домашнем каталоге root'а, вне зависимости от того, в какой директории сейчас вы находитесь.


📝| Домашнее задание

  1. Создать в домашнем каталоге вашего пользователя папку, название придумайте сами, желательно что-то короткое.
  2. Перейти в созданную папку и уже в ней создайте еще одну с произвольным названием.
  3. Вернитесь в домашний каталог из домашней директории, в созданной директории из 2 задания создайте еще одну директорию (надеюсь понятно написал😅)
  4. Определите абсолютный путь к директории из 3 задания.
  5. Определите относительный путь к директории созданной во 2м задании. Их больше чем 1 так что укажите все что смогли найти

Если тебе понравилось и ты хочешь узнать больше, подписывайся на канал Пингвины летят в Калифорнию