Урок 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 и т.д.
- В отличие от windows имена файлов и каталогов регистрозависимые. Т.е. LOG Log log lOg - разные имена.
- Линукс допускает имена с пробелами и русские, но их использование крайне не желательно, особенно пробелов.
- Расширения файлов нужны для облегчения понимания о содержимом файла. Но не гарантируют, что файл имеет именно указанное содержимое. Например вы можете создать файл MyDickPic.jpeg и записать в него свой приватник))))
- Имена файлов и каталогов могут содержать различные спецсимволы, типа !#@, но рекомендую использовать только латинские буквы, цифры, знак подчеркивания и точку.
Так же в системе вы увидите что некоторые файлы и каталоги начинаться с точки. Так обозначаются "скрытые" файлы и каталоги.
📂 | Перемещение по каталогам
Для перемещения по каталогам есть команда 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'а, вне зависимости от того, в какой директории сейчас вы находитесь.
📝| Домашнее задание
- Создать в домашнем каталоге вашего пользователя папку, название придумайте сами, желательно что-то короткое.
- Перейти в созданную папку и уже в ней создайте еще одну с произвольным названием.
- Вернитесь в домашний каталог из домашней директории, в созданной директории из 2 задания создайте еще одну директорию (надеюсь понятно написал😅)
- Определите абсолютный путь к директории из 3 задания.
- Определите относительный путь к директории созданной во 2м задании. Их больше чем 1 так что укажите все что смогли найти
Если тебе понравилось и ты хочешь узнать больше, подписывайся на канал Пингвины летят в Калифорнию