урок 2 из 10

Файловая система и пути

Понимать файловую систему Linux как одно дерево от корня и знать главные папки, смотреть, где вы и что вокруг, читать подробный вывод ls, различать абсолютные и относительные пути и помнить особенности имён.

8 мин чтения · 4 главы ·5 заданий ·домашняя работа

Одно дерево

Первое, что удивляет пришедших из Windows, — в Linux нет букв дисков. Вся файловая система — одно дерево, и растёт оно из корня, который обозначается одной косой чертой: /. Второй диск, флешка, сетевая папка тоже становятся ветками этого же дерева — их подключают в какую-то папку, обычно внутри /media или /mnt.

/ — кореньetc — настройки системы и программhome — домашние папки людейannaprojectsvar — меняющиеся данныеlog — журналыtmp — временные файлыusr — установленные программы
В Linux нет дисков C: и D: — всё растёт из одного корня /. Флешка или второй диск тоже подключаются куда-то внутрь этого дерева.

Главные папки у всех дистрибутивов почти одинаковы, и их стоит знать в лицо:

  • /home — домашние папки людей: у пользователя anna это /home/anna. Здесь ваши файлы, и здесь вы можете всё;
  • /etcнастройки системы и программ, обычные текстовые файлы;
  • /var — меняющиеся данные, прежде всего журналы в /var/log;
  • /tmp — временные файлы, которые могут исчезнуть при перезагрузке;
  • /usr — установленные программы и их файлы;
  • /root — домашняя папка администратора, не путать с корнем /.

Когда что-то сломалось, эта карта сразу подсказывает, куда смотреть: что программа делает — в её журнале в /var/log, как она настроена — в /etc.

Где я и что вокруг

Две команды отвечают на вопрос «где я и что вокруг».

pwd                 # где я: полный путь текущей папки
/home/anna/projects
ls                  # что здесь лежит
site  notes.txt

ls без ключей показывает только имена. Самые полезные ключи:

  • -l — подробный вид: права, владелец, размер, дата;
  • -a — показать и скрытые файлы, у которых имя начинается с точки;
  • -h — размеры в понятных единицах: 4,0K, 12M, 1,5G.

Ключи можно склеивать: ls -lah — всё сразу.

ls -l
drwxr-xr-x 3 anna anna 4096 Sep 20 10:14 projects
-rw-r--r-- 1 anna anna 1820 Sep 24 09:02 notes.txt
-rw-r--r-- 1 anna anna  512 Sep 24 09:05 .bashrc

Как читать строку подробного вида. Первый знак — тип: d — папка, дефис — обычный файл. Дальше девять знаков прав (разберём в уроке про права), затем владелец, размер в байтах и дата последнего изменения, в конце — имя.

Ещё два вопроса «что вокруг» задают постоянно: сколько места занято и сколько осталось. На первый отвечает du -sh с именем папки — общий размер всего, что в ней лежит. На второй — df -h: список дисков с занятым и свободным местом. Когда сервер вдруг перестаёт записывать файлы, эти две команды — первое, что стоит набрать: чаще всего просто закончилось место, и обычно его съели журналы или забытые копии.

Пути

Чтобы сказать команде, с каким файлом работать, нужен путь. Путей два вида.

Абсолютный начинается с корня / и описывает дорогу от самого верха: /home/anna/projects/site. Он работает из любой папки — поэтому его пишут в скриптах и настройках.

Относительный начинается не с / и считается от текущей папки. Если вы в /home/anna, то projects/site ведёт туда же.

/кореньhomeanna:вы здесьprojectssiteабсолютный: /home/anna/projects/site · относительный: projects/site
Абсолютный путь начинается с / и работает откуда угодно. Относительный считается от текущей папки: из /home/anna путь projects/site ведёт туда же, куда /home/anna/projects/site.

Три особых обозначения:

ЗнакЧто значитПример
.текущая папка./start.sh
..папка уровнем вышеcd ..
~ваша домашняя папкаcd ~/projects

Переход между папками — cd:

cd /etc           # абсолютный путь
cd ~/projects     # от домашней папки
cd ..             # на уровень вверх
cd -              # вернуться туда, где были до этого
cd                # без аргумента — домой

Имена и файлы

Ещё несколько особенностей имён, которые сбивают с толку новичков.

Расширение — договорённость, а не правило. Linux не решает по окончанию .txt или .jpg, что внутри файла. Файл может называться вообще без расширения — так часто называют программы и скрипты. Узнать, что на самом деле внутри, помогает команда file:

file notes report start
notes:  UTF-8 Unicode text
report: PDF document, version 1.7
start:  Bourne-Again shell script, ASCII text executable

Пробелы в именах — неудобны. Оболочка делит строку по пробелам, поэтому ls мой отчёт.txt ищет два файла: «мой» и «отчёт.txt». Имя с пробелом берут в кавычки или экранируют обратной косой чертой. Удобнее вовсе не ставить пробелы: moy-otchet.txt или my_report.txt.

ls "мой отчёт.txt"
ls мой\ отчёт.txt

В Linux почти всё — файл. Настройки — текстовые файлы в /etc, журналы — файлы в /var/log, даже устройства и сведения о процессах показываются как файлы в особых папках /dev и /proc. Поэтому одни и те же команды чтения и поиска работают почти со всем — и это главная причина, по которой их стоит знать хорошо.

Задания урока

Первые задание решается прямо здесь — без регистрации. Щёлкните по ответу.

  1. 1. Вы в /home/anna/projects/site и выполнили cd ../.. — где вы?

Остальные задания урока — в курсе, с сохранением прогресса и разбором ошибок.

  1. Сопоставьте папку и что в ней.легко
  2. Файл с точкой в начале имени защищён от чтения другими пользователями.средне
  3. Разложите пути: абсолютный или относительный.средне
  4. Заполните пропуски.средне
Пройти урок с проверкой заданий Курс «Linux и командная строка» открыт и бесплатен, прогресс сохраняется.
Открыть курс