Навигация по файлам в терминале

Терминал — это как игра с видом от первого лица: ты всегда стоишь в какой-то папке и можешь идти в соседние или смотреть, что вокруг.

Пять-шесть команд навигации покрывают 90% повседневной работы в терминале. Освоишь их — и Linux перестанет пугать.

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

Аналогия с игрой работает на удивление точно. Папки — это комнаты, переходы между ними — двери, а команда ls — как осмотреться вокруг и увидеть, что лежит в этой комнате. Ты не телепортируешься абы куда: чтобы попасть в дальнюю папку, идёшь по коридору директорий шаг за шагом или прыгаешь сразу по полному адресу. Когда привыкнешь, голова сама будет держать "карту" дерева, и ты перестанешь путаться, где находишься.

Как работает под капотом

Команда pwd (print working directory) печатает, где ты сейчас. ls (list) показывает содержимое папки. cd (change directory) переходит в другую папку. Эти команды — отдельные маленькие программы, которые bash находит и запускает.

Заметь приём, который повторяется во всём Linux: имена команд — это сокращения английских фраз. pwd — print working directory, ls — list, cd — change directory, mkdir — make directory. Как только ты увидишь в коротком имени спрятанную фразу, команды перестанут быть случайным набором букв и начнут запоминаться сами. Это маленький, но мощный лайфхак для всего курса.

pwd
# /home/codechick

ls
# projects  notes.txt

cd projects
ls -l
# показывает файлы с подробностями: права, размер, дата

cd ..
# вернуться на уровень вверх

mkdir smart-home
# создать новую папку

Пути бывают двух видов. Абсолютный начинается от корня: /home/codechick/projects — он работает откуда угодно. Относительный отсчитывается от текущей папки: projects/smart-home. Спецсимволы помогают: .. — папка выше, . — текущая, ~ — домашняя.

Чтобы прочувствовать разницу, представь адрес дома. Абсолютный путь — это полный почтовый адрес: страна, город, улица, дом; по нему тебя найдут из любой точки мира. Относительный путь — это "сосед слева" или "этажом выше": понятно только если известно, откуда ты считаешь. Оба способа верные, просто абсолютный надёжнее издалека, а относительный короче, когда ты уже рядом.

   ~/  (домашняя)
    |-- projects/
    |     |-- smart-home/   <- cd projects/smart-home
    |-- notes.txt

   cd ..   поднимает на уровень вверх ->  ~/
   cd ~    телепортирует в домашнюю ->    ~/

Несколько команд естественно продолжают навигацию: создать файл, заглянуть внутрь, скопировать или удалить. Вот безопасный набор для тренировки в своей домашней папке:

cd ~/projects/smart-home
touch plan.txt
# создать пустой файл

cp plan.txt plan-backup.txt
# скопировать файл

mv plan-backup.txt old-plan.txt
# переименовать (или переместить) файл

cat plan.txt
# показать содержимое файла на экране

rm old-plan.txt
# удалить файл (осторожно, без корзины!)

Маленький бонус — потренировать логику относительных путей можно даже на чистом Python, не трогая реальные файлы. Этот пример просто складывает кусочки пути в строку:

home = "/home/codechick"
parts = ["projects", "smart-home", "plan.txt"]
full = home
for p in parts:
    full = full + "/" + p
print("Абсолютный путь:", full)
print("А относительный от ~ :", "/".join(parts))

Частые ошибки

  • "No such file or directory". Обычно опечатка в имени или ты не в той папке — проверь pwd и ls.
  • Забывают про регистр. В Linux Projects и projects — разные папки.
  • Пробелы в именах. Папку "my project" придётся писать в кавычках или с экранированием — лучше избегать пробелов.
  • Удаляют через rm и ждут корзину. В терминале корзины нет: удалённое rm файлом не вернёшь, поэтому сначала проверь, что удаляешь.
  • Путают cd .. и cd .. Две точки — на уровень вверх, одна точка — это текущая папка, то есть "никуда".

Best practices

  • Жми Tab для автодополнения имён — это экономит время и спасает от опечаток.
  • Стрелка вверх возвращает прошлые команды — не печатай заново.
  • Используй ls -la, чтобы видеть скрытые файлы (те, что начинаются с точки).
  • Перед rm сделай ls в той же папке и убедись, что удаляешь именно то, что хотел.
  • Возьми за правило начинать работу с pwd — секунда на проверку местоположения экономит кучу ошибок.

Итоги. pwd говорит где ты, ls показывает содержимое, cd перемещает, mkdir создаёт папки, а touch, cp, mv, cat и rm работают с файлами. Пути бывают абсолютные и относительные, как полный адрес и "сосед слева". Tab и стрелки — твои друзья. Дальше научимся редактировать файлы и ставить программы.

Проверьте себя
1. Что делает команда cd ..?
AУдаляет папку
BПереходит на уровень выше (в родительскую папку)
CСоздаёт папку
DПоказывает текущий путь
2. Чем абсолютный путь отличается от относительного?
AНичем
BАбсолютный начинается от корня / и работает откуда угодно, относительный отсчитывается от текущей папки
CОтносительный длиннее
DАбсолютный работает только в домашней папке