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/

Итог главы

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

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