Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Навигация Основы командной строки

После запуска операционной системы с графической оболочкой мы попадаем в специальную рабочую область, которую часто называют "рабочий стол". Это центральная точка входа, откуда через разные пункты меню начинается работа, запускаются разные задачи. Например, для навигации по файловой системе понадобится проводник.

В командной строке всё устроено иначе: после загрузки системы (и входа, но этот пункт мы рассмотрим позже) мы попадаем в режим ожидания ввода команды. Этот режим привязан к файловой системе. Можно сказать, что мы всегда находимся внутри какой-то директории, которую называют "рабочей", working directory. Проверяется текущая директория командой pwd:

$ pwd
/Users/guest

Кстати, название команды pwd является аббревиатурой, которая расшифровывается как "print working directory". Так устроены имена многих команд, что позволяет легче и быстрее их запомнить.

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

  1. В начале нет диска, но есть единый корневой каталог /. Это вершина файловой системы, все остальные файлы и директории лежат внутри этого корня.
  2. Вместо обратных слешей \ используются прямые /.

Подробнее о различиях и файловой структуре в одном из следующих уроков, сейчас же сосредоточимся на навигации.

ls — программа, которая выводит список файлов и директорий в рабочей (текущей) директории.

$ ls
Desktop  Documents Downloads Library  Movies  Music  Pictures Public

Ещё одна полезная команда — cd (change directory), с помощью неё осуществляется перемещение по файловой структуре. Для этого ей нужно передать аргумент — директорию, в которую необходимо переместиться:

# Входим в директорию
$ cd Music
# Смотрим её содержимое
 Music$ ls
iTunes
# Смотрим текущую рабочую директорию
 Music$ pwd
/Users/guest/Music

Остановимся на этом моменте подробнее. Возможно, вы знаете, что путь до файла может быть либо абсолютный, либо относительный. Абсолютный путь — это полный путь начиная от корня, в нашем случае /, а относительный — это путь, начинающийся от нашей текущей рабочей директории. Выше мы указали относительный путь. Отличить их друг от друга очень легко: если первым символом в пути идёт /, то это абсолютный путь, иначе — относительный. Когда используется относительный путь, команда cd внутри себя пытается вычислить абсолютный. Она берёт текущую рабочую директорию /Users/guest/ и присоединяет к ней Music. В итоге получается /Users/guest/Music. Команда cd понимает и абсолютные, и относительные пути, поэтому передавать ей можно что угодно:

<не важно в каком месте>$ cd /Users/guest/Music # Абсолютный путь

Абсолютный путь однозначно определяет адрес файла или директории в файловой системе, а относительный — нет. Относительный путь имеет смысл только вместе с текущей рабочей директорией, относительно которой он считается. При передаче абсолютного пути не имеет никакого значения какая сейчас рабочая директория. Если путь существует, то переход произойдёт. Теперь рассмотрим другую задачу. Предположим, что мы находимся в директории /Users/guest/Music. Как выйти из неё и попасть снова в /Users/guest? Как минимум, мы уже знаем один способ — указать абсолютный путь и сделать cd:

 Music$ cd /Users/guest
$

Но есть путь проще, достаточно указать специальное значение .., и произойдёт переход на директорию уровнем выше.

 Music$ cd ..
$ pwd
/Users/guest

Более того, с помощью этого заполнителя можно выходить на любое количество уровней, указывая .. через разделитель:

# Выход на два уровня вверх
 Music$ cd ../..
$ pwd
/Users

Кроме двух точек иногда используется одинарная точка, означающая текущую директорию. Например, вместо cd Music, можно писать cd ./Music. Оба эти выражения эквивалентны. Зачем нужна "точка", мы рассмотрим позже.

Есть и третий вариант возврата в /Users/guest из /Users/guest/Music:

 Music$ cd
$

Дело в том, что команда cd, выполненная без аргументов, перебрасывает в домашнюю директорию текущего пользователя.

Ну и, наконец, четвёртый вариант. Домашняя директория пользователя имеет специальное обозначение — ~ (тильда), которое в момент выполнения команды заменяется на абсолютный путь. Поэтому из любого места можно сделать прямой переход в любую поддиректорию домашней директории.

 <из любого места>$ cd ~/Music
  Music$ pwd
/Users/guest/Music

Допустим, вы находитесь в домашней директории и решили посмотреть файлы в поддиректории Music. Один способ вы уже знаете, для этого нужно перейти в директорию Music и выполнить программу ls. Как обычно, есть другой путь. ls также принимает на вход аргумент — директорию, которую нужно проанализировать.

$ ls Music
iTunes

Как и в случае с cd, к аргументу ls применимы понятия абсолютных и относительных путей. Впрочем, это правило распространяется вообще на все места, где передаются пути, если не указано иное (иногда бывает, что нужно обязательно передать абсолютный путь).

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

Со временем набирать пути становится всё более лениво. Шелл облегчает жизнь и предлагает автозавершение имён. Автокомплит выполняется двойным нажатием на клавишу Tab.


Самостоятельная работа

Изучите содержимое директорий своей файловой системы. При перемещении между разделами с помощью команды cd используйте клавишу Tab для автокомплита.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
29 сентября 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
29 сентября 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
29 сентября 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
29 сентября 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
29 сентября 10 месяцев

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»