Ysa-k02-ru-v2
```wiki
Глава 2: Файловая система Unix/Linux и работа с файлами
1. Иерархия файловой системы Unix
Файловая система имеет иерархическую структуру в виде дерева. Корень файловой системы — это каталог /:
/ -> / ├── etc -> /etc │ ├── groups -> /etc/groups │ └── passwd -> /etc/passwd │ ├── home -> /home │ ├── yuri -> /home/yuri │ │ ├── Documents -> /home/yuri/Documents │ │ ├── Downloads -> /home/yuri/Downloads │ │ └── Pictures -> /home/yuri/Pictures │ │ │ └── jens -> /home/jens │ ├── Downloads -> /home/jens/Downloads │ └── Pictures -> /home/jens/Pictures ... ... └── var └── ...
Основные каталоги
/
- Корневой каталог (root)
- От него начинаются все остальные каталоги
- Обычные пользователи не должны работать здесь напрямую
/etc
- Конфигурационные файлы системы
- Настройки сервисов, пользователей, сети
Примеры:
- /etc/passwd — информация о пользователях
- /etc/hosts — локальные DNS-записи
/var
- Изменяемые данные
- Логи, кэши, очереди
Примеры:
- /var/log — системные журналы
- /var/tmp — временные файлы
/home
- Домашние каталоги пользователей
- Каждый пользователь имеет свой каталог
Примеры:
- /home/yuri
- /home/jens
- /home/wolf
2. Текущий рабочий каталог (Current Working Directory, CWD)
Что такое текущий рабочий каталог (cwd)
Текущий рабочий каталог (current working directory, CWD) — это каталог, в котором пользователь «находится» в данный момент во время работы в терминале.
Все команды, которые используют относительные пути, работают относительно текущего рабочего каталога.
Проще говоря:
- Терминал всегда «стоит» в каком-то каталоге
- Этот каталог и есть текущий рабочий каталог
Как узнать текущий рабочий каталог
Для этого используется команда:
pwd
Пример вывода:
/home/yuri
Это означает, что все относительные пути будут отсчитываться от `/home/yuri`.
Как текущий каталог влияет на команды
Предположим, структура каталогов такая:
/home/yuri/ ├── docs/ │ └── file.txt └── images/
Если текущий каталог:
/home/yuri
То команда:
ls
покажет:
docs images
А команда:
cat docs/file.txt
успешно выведет файл.
Если же текущий каталог:
/home/yuri/images
То команда:
cat docs/file.txt
НЕ сработает, потому что путь `docs/file.txt` ищется относительно `/home/yuri/images`.
В этом случае нужно:
- либо использовать относительный путь с `..`
cat ../docs/file.txt
- либо абсолютный путь
cat /home/yuri/docs/file.txt
Изменение текущего рабочего каталога
Для смены текущего каталога используется команда cd (cd = chance working directory = изменить рабочий каталог)
Примеры:
cd /etc cd /home/user cd docs cd .. cd ~
После каждой команды `cd` текущий рабочий каталог меняется.
Специальные обозначения, связанные с CWD
- `.` — текущий каталог
- `..` — родительский каталог
Примеры:
ls . ls .. cd .. cd ./docs
Пример: Команда
ls .
показывает содержимое текущего каталога (обычно эквивалентно `ls`).
Типичные ошибки новичков
- Попытка открыть файл, не учитывая текущий каталог
- Путаница между абсолютными и относительными путями
- Непонимание, почему команда «не находит файл»
Очень важно **всегда понимать, где вы сейчас находитесь**.
Практические упражнения: текущий рабочий каталог
Упражнение 1: Определение CWD
- Войти в систему
- Выполнить команду:
pwd
- Записать путь текущего каталога
Упражнение 2: Влияние CWD
- Перейти в домашний каталог
- Создать каталог:
mkdir testcwd
- Перейти в него:
cd testcwd
- Проверить текущий каталог с помощью `pwd`
Упражнение 3: Относительные пути
- Находясь в `testcwd`, создать файл:
touch file1.txt
- Вернуться на уровень выше:
cd ..
- Попробовать вывести файл:
cat testcwd/file1.txt
Упражнение 4 (дополнительно)
- Перейти в `/etc`
- Выполнить `pwd`
- Вернуться в домашний каталог одной командой
cd ~
Абсолютный путь
- Начинается с /
- Не зависит от текущего каталога
Пример:
/home/user/Documents/file.txt
Относительный путь
- Зависит от текущего каталога
- Не начинается с /
Пример:
Documents/file.txt
Специальные обозначения
- . — текущий каталог
- .. — родительский каталог
- ~ — домашний каталог пользователя
Примеры:
cd .. cd . cd ~
3. Повторение и расширение: базовые команды файловой системы
mkdir — создание каталогов
mkdir test mkdir dir1 dir2 mkdir -p projects/linux/scripts
Параметр:
- -p — создать всю цепочку каталогов
rm — удаление файлов и каталогов
rm file.txt rm -r directory rm -rf directory
Внимание: Команда rm **безвозвратно удаляет данные**.
mv — перемещение и переименование
mv file1 file2 mv file.txt /tmp/ mv dir1 dir2
4. Атрибуты файлов (ls -l)
Команда:
ls -l
Пример вывода:
-rw-r--r-- 1 yuri user 1234 Apr 10 12:00 file.txt
Расшифровка:
- -rw-r--r-- — права доступа
- 1 — количество ссылок
- yuri — владелец
- user — группа
- 1234 — размер в байтах
- Apr 10 12:00 — дата изменения
- file.txt — имя файла
5. Важные команды для работы с файлами
touch — создание пустого файла
touch file.txt
cat — вывод содержимого файла
cat file.txt
more — постраничный просмотр
more file.txt
head — начало файла
head file.txt head -n 5 file.txt
tail — конец файла
tail file.txt tail -n 10 file.txt tail -f /var/log/syslog
6. Практика: навигация и работа с файлами
Практическое задание 1: Навигация
- Перейти в домашний каталог
- Вывести текущий каталог
- Перейти в /etc
- Вернуться в домашний каталог
Практическое задание 2: Каталоги
- Создать каталог practice
- Внутри него создать каталог test1/test2
- Перейти в test2
Практическое задание 3: Файлы
- Создать файл file1.txt
- Создать файл file2.txt
- Вывести список файлов с атрибутами
Практическое задание 4: Просмотр
- Добавить текст в файл (используя echo >>)
- Просмотреть файл через cat
- Просмотреть первые 5 строк через head
- Просмотреть последние строки через tail
Практическое задание 5 (дополнительно)
- Переместить файл в другой каталог
- Переименовать файл
- Удалить файл и каталог
7. Материалы для самостоятельного изучения
Официальные и стандартизированные документы
- Filesystem Hierarchy Standard (FHS) — официальный стандарт структуры каталогов
- Полный текст стандарта (HTML): https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
- Версия стандарта (PDF): https://refspecs.linuxfoundation.org/FHS_3.0/fhs.pdf
- Wikipedia: Filesystem Hierarchy Standard (FHS) — обзор стандарта и каталогов: https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
Учебные статьи и пояснения
- Linux Handbook — Пояснение структуры каталогов для начинающих: https://linuxhandbook.com/linux-directory-structure/
- Linux Journey — Lesson: Filesystem Hierarchy (Простое и понятное объяснение структуры каталогов с упражнениями.): https://linuxjourney.com/lesson/filesystem-hierarchy
- Baeldung — Linux Filesystem Structure (подробное объяснение): https://www.baeldung.com/linux/fhs-filesystem-hierarchy-standard-structure
Дополнительные справочные материалы
- Understanding the Linux File System Hierarchy (Объяснение назначений основных директорий): https://computingforgeeks.com/understanding-the-linux-file-system-hierarchy/
- Учебный ресурс Learning Linux — объяснение стандартов FHS: https://sites.google.com/view/learning-linux/manage-directories-and-files/understand-the-file-system-hierarchy-standard-fhs
Онлайн‑курсы и практические задания
- Linux Journey - Содержит разделы по навигации и работе с файловой системой (весь курс работает бесплатно): https://linuxjourney.com/
Итог главы
После изучения главы 2 студент:
- Понимает структуру файловой системы Unix/Linux
- Различает абсолютные и относительные пути
- Умеет создавать, перемещать и удалять файлы и каталоги
- Понимает атрибуты файлов
- Умеет просматривать содержимое файлов
- Готов к работе с пользователями и файлами в реальной системе