Где я нахожусь: pwd, ls, cd и домашняя папка
После Ступени 0 вы уже умеете открыть терминал и набрать pwd, ls, cd. Это отличная база. Но пока это были просто три команды, которые «что-то делают». В этом уроке мы превратим их в осознанный навык: вы будете точно понимать, где находитесь, что вокруг и как перемещаться, не заблудившись.
Терминал не показывает картинок и иконок. Поэтому новичку легко почувствовать себя слепым: «я не вижу, где я». Хорошая новость — в Linux всегда есть способ это узнать одной командой. Давайте научимся видеть без иконок.
Терминал — это вид сверху на одну точку
Когда вы открываете проводник или Finder, вы видите окно с папками. В терминале окна нет. Вместо этого терминал всегда «стоит» в одной конкретной папке — она называется текущая рабочая директория (current working directory). Все команды по умолчанию работают именно с ней.
Первый вопрос, который стоит задавать всегда: «А где я сейчас стою?» Ответ даёт команда pwd (print working directory).
$ pwd
/home/lev
Эта строка /home/lev — ваш адрес. Прочитать его легко: каждая / это «вложенная папка». Запись /home/lev означает: от самого верха (/) спускаемся в папку home, внутри неё в папку lev. Вот здесь вы и стоите.
Дерево файловой системы на пальцах
В Linux все папки и файлы растут из одной общей точки — корня. Корень обозначается просто /. У него нет имени, это самый верх. Из корня растёт всё остальное, как ветки из ствола дерева.
Вот как выглядит верхушка этого дерева на типичной системе:
$ ls /
bin boot dev etc home lib media opt root tmp usr var
Не нужно запоминать их все прямо сейчас. Достаточно знать три:
/— корень, самый верх. Всё внутри./home— здесь живут папки пользователей. Внутри/home/lev,/home/annaи так далее./home/lev— ваша домашняя папка (если вас зовутlev). Здесь ваши документы, загрузки, проекты.
В отличие от Windows, где есть диск C: и диск D:, в Linux нет букв дисков. Есть одно дерево, и даже флешка или второй жёсткий диск просто «подключаются» как папка внутри этого дерева. Одно дерево на всё — это важная идея Linux, мы вернёмся к ней позже.
Домашняя папка и значок тильда
Ваша домашняя папка — это место по умолчанию. Когда вы открываете терминал, обычно вы стоите именно в ней. У неё есть короткий значок: ~ (тильда). Где бы вы ни находились, ~ всегда означает «моя домашняя папка».
$ pwd
/home/lev
$ echo ~
/home/lev
Команда echo просто печатает то, что ей дали. Здесь она показала, во что разворачивается ~. Это удобно: вместо длинного /home/lev/projects можно писать ~/projects.
Что вокруг меня: ls
Команда ls (list) показывает содержимое текущей папки — какие файлы и папки в ней лежат.
$ ls
documents downloads projects notes.txt
Здесь три папки и один файл. Но как отличить папку от файла? Добавим флаг -F — он дорисовывает / к именам папок:
$ ls -F
documents/ downloads/ projects/ notes.txt
Теперь видно: documents/, downloads/, projects/ — папки (есть /), а notes.txt — файл. Ещё полезнее флаг -l (long) — он показывает подробности в столбик:
$ ls -l
drwxr-xr-x 2 lev lev 4096 May 28 10:15 documents
drwxr-xr-x 2 lev lev 4096 May 28 10:15 downloads
drwxr-xr-x 3 lev lev 4096 May 28 11:02 projects
-rw-r--r-- 1 lev lev 214 May 29 09:30 notes.txt
Пока обращайте внимание только на самый первый символ каждой строки. Если это d — это папка (directory). Если - — обычный файл. Остальные буквы (rwxr-xr-x) — это права доступа, мы разберём их в отдельном модуле. Сейчас просто запомните: d в начале значит «папка».
Флаги можно объединять: ls -lF или ls -la. Флаг -a (all) показывает ещё и скрытые файлы — те, чьё имя начинается с точки:
$ ls -a
. .. .bashrc documents downloads notes.txt projects
Появились .bashrc, а также странные . и ... Точка . — это «текущая папка», а две точки .. — это «папка уровнем выше» (родительская). Это не файлы, а служебные ссылки, и они пригодятся нам прямо сейчас.
Перемещение: cd
Команда cd (change directory) переносит вас в другую папку. Дальше уже работаете там.
$ pwd
/home/lev
$ cd projects
$ pwd
/home/lev/projects
Вы зашли внутрь projects. Заметьте: мы написали cd projects, а не cd /home/lev/projects. Это относительный путь — «папка projects относительно того, где я сейчас». Так короче.
А как вернуться назад, на уровень выше? Вот где нужны две точки:
$ pwd
/home/lev/projects
$ cd ..
$ pwd
/home/lev
cd .. поднял нас на одну ступеньку вверх. Можно подниматься и на несколько: cd ../.. поднимет на два уровня.
Три очень полезных приёма cd:
$ cd ~ # перейти в домашнюю папку
$ cd # то же самое — cd без аргументов = домой
$ cd - # вернуться в предыдущую папку (как кнопка "назад")
cd без всего возвращает домой из любой точки системы — запомните это как кнопку «потеряться нестрашно». А cd / отправит вас в самый корень дерева, на самый верх.
Абсолютный и относительный путь
Это единственное «теоретическое» понятие урока, но оно важное. Путь к папке можно записать двумя способами:
- Абсолютный путь начинается с
/и отсчитывается от корня. Например/home/lev/projects. Он работает откуда угодно — это как полный почтовый адрес с индексом. - Относительный путь не начинается с
/и отсчитывается от того места, где вы стоите сейчас. Напримерprojectsили../downloads. Это как сказать «соседняя дверь» — понятно только если знаешь, где ты.
$ pwd
/home/lev
$ cd /etc # абсолютный: всегда попадём в /etc
$ pwd
/etc
$ cd /home/lev # абсолютный: всегда вернёмся домой
$ cd projects # относительный: projects внутри текущей папки
$ pwd
/home/lev/projects
Правило для новичка простое: если запутались, пишите абсолютный путь от /. Он не подведёт. Относительные пути экономят буквы, когда вы уверены, где стоите.
Нажмите клавишу Tab при наборе имени папки — терминал допишет его за вас. Наберите cd pro и нажмите Tab — получится cd projects/. Это автодополнение, и оно экономит огромное количество времени и опечаток. Профессионалы почти не набирают длинные имена руками.
Попробуй сам
Откройте терминал и пройдите этот маршрут, проговаривая вслух «где я» на каждом шаге:
$ pwd # узнайте свой стартовый адрес
$ ls -lF # осмотритесь: что за папки и файлы вокруг
$ cd / # поднимитесь в самый корень
$ ls # посмотрите на верхушку дерева
$ cd ~ # вернитесь домой одной командой
$ pwd # убедитесь, что снова дома
Затем попробуйте «заблудиться» специально: зайдите в любую папку через cd, потом ещё в одну, проверяя pwd после каждого шага. Когда почувствуете, что потерялись — наберите просто cd и нажмите Enter. Вы дома. Этот трюк убирает страх «а вдруг я застряну где-то непонятно где».