Education 1.1 Help

Навигация

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

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

В этом уроке мы поговорим о навигации по директориям через командную оболочку.

Как проверить, в какой директории мы находимся

Начнем с самого основного. Проверить, в какой директории мы сейчас находимся, можно командой pwd:

pwd /Users/guest

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

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

В приведенном примере есть две неожиданности для тех, кто привык пользоваться Windows:

  1. В начале указан не диск, а единый корневой каталог /. Это вершина файловой системы, внутри которой лежат все остальные файлы и директории

  2. Вместо обратных слэшей \ используются прямые слэши /

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

Как посмотреть список файлов

Изучим команду ls (сокращение от list). Она выводит список файлов и директорий в текущей рабочей директории:

ls Desktop Documents Downloads Library Movies Music Pictures Public

Как переместиться в другую директорию

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

# Входим в директорию cd Music # Смотрим ее содержимое ls iTunes
# Смотрим текущую рабочую директорию pwd /Users/guest/Music
# Если имя директории содержит пробел, то его нужно экранировать с помощью `\` cd Best\ music

Остановимся на этом моменте подробнее. Возможно, вы знаете, что есть два способа обозначить путь до файла:

  • Абсолютный путь начинается от корня

  • Относительный путь начинающийся от текущей рабочей директории

Выше мы указали относительный путь. Отличить их друг от друга очень легко:

  • Абсолютный — первым символом в пути идет /

  • Относительный — во всех остальных случаях

Когда мы используем относительный путь, команда cd считывает его и внутри себя пытается вычислить абсолютный путь. Она берет текущую рабочую директорию /Users/guest/ и присоединяет к ней Music. В итоге получается /Users/guest/Music.

Команда cd понимает и абсолютные, и относительные пути. Поэтому передавать ей можно что угодно:

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

Еще раз проговорим, что абсолютный путь однозначно определяет адрес файла или директории в файловой системе, а относительный — нет.

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

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

cd /Users/guest

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

# В директории /Users/guest/Music cd .. pwd /Users/guest

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

# В директории /Users/guest/Music # Выходим на два уровня вверх cd ../.. pwd /Users

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

Есть и третий вариант возврата в /Users/guest из директории /Users/guest/Music. Можно выполнить команду cd без аргументов, тогда мы перейдем в домашнюю директорию текущего пользователя:

# Из любого места cd pwd /Users/guest

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

# Из любого места cd ~/Music pwd /Users/guest/Music

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

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

ls Music iTunes

asciinema

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

Команда cd - возвращает в предыдущую директорию. Другими словами, последовательный вызов этой команды переключает между двумя последними посещенными директориями.

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

Со временем набирать пути становится все более лениво. Тогда можно дважды нажать Tab и воспользоваться автокомплитом — функцией, которая автоматически завершает имена.

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

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

Вопросы для самопроверки

Что такое рабочая директория?

  • Директория /tmp

  • Домашняя директория пользователя

  • Директория, в которой находятся рабочие проекты

  • Директория, относительно которой выполняются все команды в командной строке

Как посмотреть содержимое директории /opt, если текущая рабочая директория /opt/new?

  • ls ..

  • ls .

  • ls /opt

  • Сначала cd .., а затем ls

  • ls opt

Как перейти из /home/user/projects в /home?

  • cd /home

  • cd ..

  • cd home

  • cd ../..

  • cd .

Last modified: 12 June 2024