Где я нахожусь?
Файловая система — это дерево каталогов с корнем /. pwd выводит твою текущую позицию в этом дереве; cd перемещает тебя. Абсолютные пути начинаются с /; относительные — с текущего местоположения.
Каждая команда выполняется где-то — в конкретном каталоге. Если ты не знаешь, где находишься, нельзя надёжно именовать файлы или понять, почему команда не работает. Файловая система имеет форму — дерево — и две команды позволяют прочитать твою позицию в этом дереве и перемещаться по нему. Эти две команды лежат в основе почти всего, что ты будешь делать в терминале.
К концу урока ты будешь знать, как устроено дерево файловой системы Linux, как вывести текущее местоположение командой pwd и как перемещаться командой cd с помощью абсолютных и относительных путей.
После этого урока ты сможешь описать дерево файловой системы Linux, использовать pwd для вывода рабочего каталога, использовать cd для навигации с абсолютными путями (начинающимися с /) и относительными путями (начинающимися с текущего места), а также использовать сокращения ., .. и ~.
Файловая система — единое дерево с корнем /. На Linux (и Unix-подобных системах) каждый файл и каталог живёт где-то внутри одного дерева. Корень этого дерева называется / (один прямой слеш). Под / находятся известные каталоги верхнего уровня: /etc (файлы конфигурации), /home (домашние каталоги пользователей), /var (переменные данные: логи), /usr (программы), /tmp (временные файлы). Каждый путь в системе начинается с /.
Буквенных обозначений дисков, как C:\, нет. Всё — включая внешние диски, подключённые после загрузки — присоединено где-то внутри одного и того же дерева.
pwd выводит твой рабочий каталог. У оболочки всегда есть текущий рабочий каталог — каталог, в котором она «стоит» прямо сейчас. Команды, принимающие имя файла, используют этот каталог по умолчанию, если путь не указан явно. pwd (print working directory — вывести рабочий каталог) говорит, где ты находишься:
pwdТипичный вывод:
/home/aliceЭтот /home/alice — абсолютный путь: он начинается от корня / и перечисляет все каталоги до пункта назначения.
cd перемещает твой рабочий каталог. Передай абсолютный путь — и ты прыгаешь в точное место, независимо от того, где сейчас находишься:
cd /etc
pwdВывод:
/etcПередай относительный путь — и оболочка интерпретирует его, начиная с текущего каталога:
cd /home/alice
cd projects
pwdВывод:
/home/alice/projectsprojects был разрешён относительно /home/alice (где ты был), поэтому ты оказался в /home/alice/projects.
Три сокращения навигации экономят постоянный набор. Оболочка определяет три специальных имени каталога:
.— сам текущий каталог.cd .ничего полезного не делает; ноls .выводит список здесь...— родительский каталог.cd ..перемещает на один уровень вверх, к корню.~— твой домашний каталог (например,/home/alice).cd ~всегда возвращает домой. Голоеcdбез аргумента делает то же самое.
Их можно комбинировать: cd ../../etc означает «подняться на два уровня, затем войти в etc».
Сеанс навигации.
Начиная с /home/alice, перейди в /etc, осмотрись, затем вернись домой:
pwd/home/alicecd /etc
pwd/etcls(выводит файлы конфигурации в /etc)
cd ..
pwd/cd ~
pwd/home/aliceОбрати внимание: cd .. из /etc перешёл в / (родитель /etc), а не в /home/alice. Рабочий каталог сдвинулся на один шаг к корню дерева.
▸Почему это работает
На macOS дерево файловой системы устроено так же, и pwd/cd ведут себя идентично. Структура верхнего уровня отличается от Linux: /Users вместо /home, /System и /Library вместо /usr/lib и т.д. Концепции — корень, абсолютные пути, относительные пути, ./../~ — идентичны.
▸Частая ошибка
Распространённая ошибка — путать / (корневой каталог) с ~ (домашний каталог). cd / переносит тебя на самую верхушку дерева — оттуда видны etc, home, var и остальное. cd ~ переносит тебя в твой личный каталог внутри /home. Это совершенно разные места. Всегда запускай pwd, если не уверен, где находишься.
Твой рабочий каталог — /home/alice/projects. Ты выполняешь: cd ../docs. Какой будет твой рабочий каталог после этого?
Файловая система Linux — это дерево с корнем /. Каждый файл имеет местоположение, выраженное как путь через это дерево. pwd выводит твой текущий рабочий каталог — твою позицию в дереве. cd перемещает тебя: дай ему абсолютный путь (начинается с /), чтобы прыгнуть в точное место, или относительный путь (начинается с текущего места) для пошаговой навигации. Сокращения . (здесь), .. (родитель) и ~ (домой) ускоряют навигацию. Запускай pwd всякий раз, когда чувствуешь, что потерялся — оболочка всегда знает, где она находится, и теперь ты тоже.
Практика
Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.
Что-то непонятно?
Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.