Ysa-k02-ru
Капитул 2: Файловая система Unix и базовые команды
2.1 Иерархия файловой системы Unix
Файловая система Unix организована в виде **дерева** с корневым каталогом **/**. Все остальные каталоги являются его «ветвями».
Основные каталоги:
- **/** — корень файловой системы, от него отходит всё дерево каталогов.
- **/etc** — конфигурационные файлы системы и сервисов. Пример: `/etc/passwd`, `/etc/hostname`.
- **/var** — файлы, которые изменяются во время работы системы (логи, почта, временные файлы). Пример: `/var/log/syslog`.
- **/home** — домашние каталоги пользователей. Пример: `/home/juri`.
Дополнительно можно встретить:
- **/bin** — основные исполняемые программы (ls, cat, mv).
- **/usr** — вспомогательные программы и библиотеки.
- **/tmp** — временные файлы.
Пример команды:
```bash
ls /
```
Выводит содержимое корневого каталога.
---
2.2 Базовые команды работы с файлами и каталогами
mkdir
Создание нового каталога.
```bash
mkdir мой_каталог
```
rm
Удаление файлов и каталогов.
```bash rm файл.txt # удалить файл rm -r каталог # удалить каталог со всем содержимым ```
mv
Перемещение или переименование файлов и каталогов.
```bash mv файл.txt /home/juri/ # переместить файл mv oldname.txt newname.txt # переименовать ```
Практика:
1. Создать каталог `praktika` в домашнем каталоге. 2. Создать в нём файл `example.txt` с помощью `touch`. 3. Переименовать файл в `example1.txt`. 4. Удалить файл и каталог.
---
2.3 Атрибуты файлов в Unix
Команда `ls -l` отображает подробную информацию о файлах и каталогах:
```bash ls -l ```
Объяснение вывода:
``` -rw-r--r-- 1 juri users 1234 Dec 28 10:00 example.txt ```
- **-rw-r--r--** — права доступа.
- **1** — количество ссылок на файл.
- **juri** — владелец файла.
- **users** — группа.
- **1234** — размер файла в байтах.
- **Dec 28 10:00** — дата последней модификации.
- **example.txt** — имя файла.
---
2.4 Работа с содержимым файлов
- cat
Выводит содержимое файла:
```bash cat example.txt ```
- more / less
Позволяет пролистывать длинные файлы:
```bash more bigfile.txt less bigfile.txt ```
- head / tail
Выводят начало или конец файла:
```bash head -n 5 file.txt # первые 5 строк tail -n 5 file.txt # последние 5 строк ```
- file
Определяет тип файла:
```bash file example.txt ```
---
2.5 Практические задания
1. Перейти в домашний каталог (`cd ~`) и создать каталоги `project1` и `project2`. 2. В каждом каталоге создать текстовые файлы: `file1.txt`, `file2.txt`. 3. Просмотреть содержимое каталога с помощью `ls -l`. 4. Используя `cat`, `head`, `tail`, вывести содержимое файлов и проверить их тип с помощью `file`. 5. Переместить один файл из `project1` в `project2`. 6. Удалить один из каталогов со всеми файлами.
---
2.6 Дополнительные материалы для самостоятельного изучения
- [The Linux Command Line](http://linuxcommand.org/tlcl.php) — книга по базовым командам Linux.
- [Filesystem Hierarchy Standard](https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf) — стандарт иерархии каталогов.
- Практика с виртуальной машиной: ежедневно выполнять навигацию по файловой системе, создавать/удалять файлы, изучать их атрибуты.