Урок 2 из 8 · 20 мин · обновлено

Файлы и папки: где я и как перемещаться

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

Дерево папок

В Windows у каждого диска своё начало: C:\, D:\. В Linux одна общая структура, и начинается она с корня — /. Внутри — системные папки:

  • /home — домашние папки пользователей: /home/anna;
  • /etc — настройки системы и программ;
  • /var/log — журналы, или логи;
  • /usr/bin — программы, в том числе сами команды.

Работать мы будем в своей домашней папке. Для практики создайте учебную папку — подробно команды разберём в следующем уроке:

Терминал
mkdir -p ~/practice/photos ~/practice/docs
touch ~/practice/notes.txt ~/practice/photos/cat.jpg ~/practice/photos/dog.jpg ~/practice/photos/sea.png

pwd и ls: где я и что вокруг

Терминал
pwd
Результат
/home/anna

pwd показывает текущую папку — ту, где вы сейчас находитесь. Все команды по умолчанию работают в ней.

Терминал
ls practice
Результат
docs  notes.txt  photos

ls показывает содержимое папки: без аргумента — текущей. Полезные параметры:

  • ls -l — подробный список: права, владелец, размер, дата изменения;
  • ls -a — показать и скрытые файлы. В Linux скрыт любой файл, имя которого начинается с точки, например .bashrc с настройками bash;
  • ls -lh — размеры в понятном виде: 4,0K, 12M.

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

Терминал
cd practice
pwd
cd photos
pwd
Результат
/home/anna/practice
/home/anna/practice/photos

Особые обозначения:

  • ~ — домашняя папка: cd ~ вернёт домой из любого места. Просто cd без аргумента делает то же;
  • . — текущая папка;
  • .. — папка уровнем выше: cd .. из photos приведёт в practice;
  • cd - — вернуться в предыдущую папку, где вы были.

Абсолютные и относительные пути

Путь к файлу можно записать двумя способами:

  • абсолютный — от корня, начинается с /: /home/anna/practice/photos/cat.jpg. Работает откуда угодно;
  • относительный — от текущей папки: если вы в practice, тот же файл — photos/cat.jpg. А из папки docs — ../photos/cat.jpg: подняться на уровень выше, потом зайти в photos.

Ошибка «No such file or directory» — «нет такого файла или папки» — чаще всего значит, что вы не в той папке или путь неверен. Проверьте pwd и ls.

Имена в Linux чувствительны к регистру: Photos и photos — разные папки. А пробелы в именах неудобны: такое имя берут в кавычки, cd "My Photos". Поэтому в работе пробелы заменяют дефисом или подчёркиванием.

Попробуйте сами. Находясь в папке ~/practice/docs, одной командой покажите содержимое папки photos, не переходя в неё. Потом перейдите в photos и вернитесь обратно в docs самым коротким способом.

Решение
Терминал
cd ~/practice/docs
ls ../photos
cd ../photos
cd -
pwd
Результат
cat.jpg  dog.jpg  sea.png
/home/anna/practice/docs
/home/anna/practice/docs

../photos — относительный путь: подняться в practice и зайти в photos. cd - возвращает в предыдущую папку и сразу печатает её путь, поэтому строка с путём выводится дважды — второй раз её напечатал pwd.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Вы не понимаете, в какой папке сейчас находитесь. Какая команда подскажет?

  2. Чем путь /home/anna/practice отличается от practice?

  3. Вы в папке /home/anna/practice/photos. Куда приведёт cd ..?

  4. Почему ls не показывает файл .bashrc, хотя он есть?