Ysa-k02-ru-v2

From
Jump to navigation Jump to search

```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

  1. Войти в систему
  2. Выполнить команду:
pwd
  1. Записать путь текущего каталога

Упражнение 2: Влияние CWD

  1. Перейти в домашний каталог
  2. Создать каталог:
mkdir testcwd
  1. Перейти в него:
cd testcwd
  1. Проверить текущий каталог с помощью `pwd`

Упражнение 3: Относительные пути

  1. Находясь в `testcwd`, создать файл:
touch file1.txt
  1. Вернуться на уровень выше:
cd ..
  1. Попробовать вывести файл:
cat testcwd/file1.txt

Упражнение 4 (дополнительно)

  1. Перейти в `/etc`
  2. Выполнить `pwd`
  3. Вернуться в домашний каталог одной командой
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: Навигация

  1. Перейти в домашний каталог
  2. Вывести текущий каталог
  3. Перейти в /etc
  4. Вернуться в домашний каталог

Практическое задание 2: Каталоги

  1. Создать каталог practice
  2. Внутри него создать каталог test1/test2
  3. Перейти в test2

Практическое задание 3: Файлы

  1. Создать файл file1.txt
  2. Создать файл file2.txt
  3. Вывести список файлов с атрибутами

Практическое задание 4: Просмотр

  1. Добавить текст в файл (используя echo >>)
  2. Просмотреть файл через cat
  3. Просмотреть первые 5 строк через head
  4. Просмотреть последние строки через tail

Практическое задание 5 (дополнительно)

  1. Переместить файл в другой каталог
  2. Переименовать файл
  3. Удалить файл и каталог

7. Материалы для самостоятельного изучения

Официальные и стандартизированные документы

Учебные статьи и пояснения

Дополнительные справочные материалы

Онлайн‑курсы и практические задания

  • **Linux Journey (весь курс работает бесплатно):**
 https://linuxjourney.com/ :contentReference[oaicite:8]{index=8}  
 *Содержит разделы по навигации и работе с файловой системой.*

Как использовать ссылки для обучения

  • Начните с официального стандарта FHS, чтобы понять **формальную структуру каталогов** (`/`, `/etc`, `/var`, `/usr` и др.).
  • Затем прочитайте статьи на **Linux Handbook** и **Baeldung** — они объясняют структуру на простых примерах.
  • Используйте **Linux Journey** для интерактивной практики и закрепления навыков.
  • Сравнивайте объяснение с тем, что вы видите на вашей виртуальной Linux‑машине:
  ls -l /
  ls -l /etc
  ls -l /var
  

Итог

Эти ресурсы:

  • дают **понятное объяснение структуры Unix/Linux‑файловой системы**
  • предлагают **примеры и практические задания**
  • подходят как **для начинающих**, так и для углублённого изучения

Используйте их для самостоятельной практики и закрепления материала главы 2.

contentReference[oaicite:9]{index=9}

```


Онлайн-документация и статьи

  • **Linux Filesystem Hierarchy (подробное руководство по иерархии каталогов)** — объясняет стандарт и структуру каталогов Linux/Unix. [Linux Filesystem Hierarchy – Linuxtopia (англ.)](https://www.linuxtopia.org/online_books/linux_beginner_books/linux_filesystem/index.html?utm_source=chatgpt.com)
  • **Linux Directory Structure Explained for Beginners** — краткое и наглядное объяснение структуры каталогов для новичков. :contentReference[oaicite:1]{index=1}
  • **Статья на Хабре: Структура файловой иерархии Linux (рус.)** — обзор стандартов и назначений каталогов. :contentReference[oaicite:2]{index=2}
  • **Урок «Иерархия файловой системы» на Linux Journey** — содержит объяснение каталогов и практические лабораторные задания. :contentReference[oaicite:3]{index=3}
  • **Навигация по файловой системе (Яндекс.Учебник)** — пошаговое руководство по абсолютным и относительным путям, каталогам и ссылкам. :contentReference[oaicite:4]{index=4}
  • **Каталоги Linux / Father Beginners Guide (YoungLinux)** — объясняет назначение всех основных системных каталогов. :contentReference[oaicite:5]{index=5}

Учебные курсы и видео (англ.)

  • **O’Reilly: Becoming a Linux Power User (видео-курс)** — включает подробные уроки про файловую систему. :contentReference[oaicite:6]{index=6}
  • **Linux Essentials: Hands-On Course (видео)** — практический курс по основам Linux, включая структуру файловой системы. :contentReference[oaicite:7]{index=7}
  • **Learn Linux in a Month of Lunches (книга/онлайн-глава про файловую систему)** — подробное руководство по каталогам, полезно при чтении по теме FHS. :contentReference[oaicite:8]{index=8}

Книги и печатные ресурсы

  • **«UNIX и Linux. Руководство системного администратора»** — классическое руководство по системному администрированию (обсуждается файловая система, права, команды и др.).
 *(заметка: ссылки на скачивание встречаются на форумах, но лучше использовать официальные издания и покупать/брать в библиотеке)* :contentReference[oaicite:9]{index=9}  
  • **«The Linux Command Line» (автор William Shotts)** — отличная книга для начинающих, охватывает работу с каталогами, файлами и командами оболочки.
  • **«Linux Bible» и «Linux Fundamentals»** — большие справочники, включающие разделы по файловой системе (структура, команды, практика).

Дополнительные русскоязычные учебники и материалы

  • **Учебник по системе Linux (разделы про команды и файловую систему)** — структурированный материал для новичков. :contentReference[oaicite:10]{index=10}
  • **Лекция «Работа с файловой системой» (НOU ИНТУИТ)** — учебный материал про навигацию и пути. :contentReference[oaicite:11]{index=11}
  • **Учебные страницы о работе с файлами и каталогами (volodya-leveryev.github.io)** — практические примеры команд `cd`, `ls`, структуры дерева каталогов. :contentReference[oaicite:12]{index=12}

Советы по работе с материалами

  • Читайте как минимум **2–3 источника** про иерархию файловой системы — это поможет лучше понять стандарты и различия между дистрибутивами.
  • Практикуйтесь с **командами cd, ls, pwd, tree** (если установлена) после каждого раздела теории — практика ускоряет усвоение.
  • Попробуйте найти **анализ структуры каталогов в установленной VM**:
ls /usr
ls /var/log
ls /etc
  • Используйте **вопросы и задания** из онлайн-уроков (например, на Linux Journey) для закрепления материала. :contentReference[oaicite:13]{index=13}
  • Чтобы углубить понимание, можно читать главы про **не только команды, но и архитектуру Unix/Linux** (книги по системному администрированию и устройству ОС).

Итог

Предложенные ссылки и книги дадут вам:

  • Понимание стандартов и структуры каталогов Unix/Linux (FHS)
  • Практические знания про навигацию и команды
  • Глубокое понимание назначения каждого важного каталога
  • Возможность самостоятельной подготовки к практическим заданиям и экзаменам

Эти ресурсы пригодятся для **самостоятельного углубленного изучения** темы файловой системы в Linux/Unix.

contentReference[oaicite:14]{index=14}

```

Итог главы

После изучения главы 2 студент:

  • Понимает структуру файловой системы Unix/Linux
  • Различает абсолютные и относительные пути
  • Умеет создавать, перемещать и удалять файлы и каталоги
  • Понимает атрибуты файлов
  • Умеет просматривать содержимое файлов
  • Готов к работе с пользователями и файлами в реальной системе

```