Перейти к содержанию

Урок 002: терминал, файлы и пути

Что получится в конце

Вы научитесь отвечать на три практических вопроса: «Где сейчас находится терминал?», «Что лежит в этой папке?» и «Как перейти к нужному файлу?». Затем создадите небольшую структуру без команд удаления.

Одна главная мысль

Терминал всегда работает из какой-то текущей папки. Почти все команды в этом уроке либо показывают эту папку, либо показывают её содержимое, либо переводят терминал в другое место.

Представьте папки как комнаты:

  • текущая папка — комната, в которой вы стоите;
  • имя файла — предмет в этой комнате;
  • cd — переход в другую комнату;
  • путь — маршрут до нужной комнаты или предмета.

Сначала только смотрим

Первые команды ничего не создают и не удаляют.

Windows PowerShell

Get-Location

Название читается как «получить местоположение». Команда показывает полный адрес текущей папки, например:

C:\Users\Vadim\Documents\academy-lab

Теперь выполните:

Get-ChildItem

Название означает «получить вложенные элементы». Команда выводит файлы и папки внутри текущей папки. Короткая команда dir в PowerShell даёт похожий результат.

macOS или Linux

pwd

pwd сокращает выражение print working directory — «показать рабочую папку». Пример ответа:

/Users/vadim/Documents/academy-lab

Теперь выполните:

ls

ls происходит от list — «показать список». Команда выводит файлы и папки внутри текущей папки.

После этих двух действий вы должны уметь сказать: «Терминал находится здесь, а внутри я вижу такие имена».

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

Переходим в папку через cd

Создадим внутри academy-lab папку data. Пока используйте боковую панель VS Code: нажмите кнопку создания папки и назовите её data.

В терминале, открытом в academy-lab, выполните:

cd data

Разбор команды:

  • cd означает change directory — «сменить папку»;
  • пробел отделяет команду от назначения;
  • data — имя папки, в которую нужно перейти;
  • Enter выполняет переход.

Команда обычно ничего не печатает при успехе. Сразу проверьте результат командой текущей папки: Get-Location в PowerShell или pwd в macOS/Linux. Адрес должен заканчиваться на data.

Чтобы вернуться на один уровень вверх, выполните:

cd ..

Две точки .. означают родительскую папку — ту, внутри которой находится текущая. После команды снова проверьте местоположение.

Одна точка . означает саму текущую папку. Команда cd . поэтому оставит терминал на месте.

Создаём папки командой

Находясь в корне academy-lab, выполните:

mkdir docs

Разбор:

  • mkdir сокращает make directory — «создать папку»;
  • docs — имя новой папки.

Команда доступна в PowerShell, bash и zsh. После неё покажите содержимое текущей папки и убедитесь, что появилось имя docs.

Теперь создайте вложенные папки по одной:

cd data
mkdir input
mkdir output
cd ..

Не вставляйте все строки вслепую. После каждой ответьте, где теперь находится терминал и что должно измениться.

Создаём и читаем файл

Для первого раза создайте файл notes.txt через боковую панель VS Code внутри папки docs. Запишите строку:

Среда готова

Затем прочитайте файл из терминала.

Windows PowerShell

Get-Content docs\notes.txt
  • Get-Content означает «получить содержимое»;
  • docs\notes.txt указывает: войти в папку docs и взять notes.txt.

macOS или Linux

cat docs/notes.txt
  • cat выводит содержимое текстового файла;
  • docs/notes.txt ведёт в папку docs к файлу notes.txt.

Ожидаемый вывод в обоих случаях:

Среда готова

Относительный путь — маршрут от текущего места

Пусть структура выглядит так:

academy-lab/          ← терминал здесь
├── data/
│   ├── input/
│   └── output/
├── docs/
│   └── notes.txt
└── hello.py

Из корня academy-lab путь docs/notes.txt читается как два шага:

  1. открыть вложенную папку docs;
  2. найти в ней notes.txt.

Это относительный путь, потому что маршрут начинается от места, где сейчас стоит терминал.

Если перейти в docs, короткого имени достаточно:

cd docs

Затем файл можно прочитать как notes.txt, потому что он находится в текущей папке.

Чтобы из docs обратиться к hello.py, сначала нужно подняться к родителю:

../hello.py       # macOS/Linux
..\hello.py       # Windows PowerShell

.. означает «на уровень вверх», затем указывается имя файла.

Абсолютный путь — полный адрес

Абсолютный путь начинается не от текущей папки, а от диска или корня файловой системы:

C:\Users\Vadim\Documents\academy-lab\hello.py   # Windows
/Users/vadim/Documents/academy-lab/hello.py       # macOS
/home/vadim/academy-lab/hello.py                  # Linux

Абсолютный путь длиннее, зато не меняет смысл после cd. Не копируйте пример буквально: имя пользователя и расположение папки на вашем компьютере будут другими. Своё значение получите через Get-Location или pwd.

Пробелы требуют кавычек

Если имя содержит пробел, оболочка без кавычек примет части за разные аргументы:

cd "My Projects"

Для учебных файлов проще использовать имена без пробелов: academy-lab, raw-data, positions.txt.

Безопасная последовательность

Перед каждой операцией придерживайтесь одного ритма:

  1. покажите текущую папку;
  2. покажите её содержимое;
  3. произнесите, что должна сделать следующая команда;
  4. выполните одну команду;
  5. снова проверьте папку или содержимое.

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

Упражнение

Соберите структуру:

academy-lab/
├── data/
│   ├── input/
│   └── output/
├── docs/
│   └── notes.txt
└── hello.py

Затем выполните и объясните:

  1. покажите текущую папку и её содержимое;
  2. перейдите из корня в data/input;
  3. вернитесь в корень, используя cd .. два раза;
  4. прочитайте docs/notes.txt относительным путём;
  5. запустите hello.py;
  6. намеренно укажите missing.py и объясните ошибку без изменения файлов.

Самопроверка

  • Как узнать, где находится терминал?
  • Чем команда показа содержимого отличается от cd?
  • Что означает ..?
  • Как прочитать путь docs/notes.txt по шагам?
  • Почему один относительный путь может работать до cd и перестать работать после него?

← Предыдущий урок · Практика →