Навигация
После запуска операционной системы с графической оболочкой мы попадаем в специальную рабочую область, которую часто называют рабочий стол. Это центральная точка входа, откуда через разные пункты меню начинается работа, запускаются разные задачи. Например, для навигации по файловой системе понадобится проводник.
В командной строке все устроено иначе: после загрузки системы мы попадаем в режим ожидания ввода команды. Этот режим привязан к файловой системе. Можно сказать, что мы всегда находимся внутри какой-то директории, которую называют рабочей директорией (working directory).
В этом уроке мы поговорим о навигации по директориям через командную оболочку.
Как проверить, в какой директории мы находимся
Начнем с самого основного. Проверить, в какой директории мы сейчас находимся, можно командой pwd
:
Кстати, название команды pwd
— это сокращение, которое расшифровывается как print working directory. Похожим образом устроены имена многих команд, что позволяет легче и быстрее их запомнить.
По умолчанию новая сессия командной оболочки открывается внутри домашней директории пользователя. У каждого пользователя своя домашняя директория, поэтому в вашем случае путь будет отличаться.
В приведенном примере есть две неожиданности для тех, кто привык пользоваться Windows:
В начале указан не диск, а единый корневой каталог
/
. Это вершина файловой системы, внутри которой лежат все остальные файлы и директорииВместо обратных слэшей
\
используются прямые слэши/
Подробнее о различиях и файловой структуре мы поговорим в одном из следующих уроков, а сейчас сосредоточимся на навигации.
Как посмотреть список файлов
Изучим команду ls
(сокращение от list). Она выводит список файлов и директорий в текущей рабочей директории:
Как переместиться в другую директорию
Еще одна полезная команда — cd
(сокращение от change directory). С помощью нее мы перемещаемся по файловой структуре. Для этого ей нужно передать аргумент — директорию, в которую необходимо переместиться:
Остановимся на этом моменте подробнее. Возможно, вы знаете, что есть два способа обозначить путь до файла:
Абсолютный путь начинается от корня
Относительный путь начинающийся от текущей рабочей директории
Выше мы указали относительный путь. Отличить их друг от друга очень легко:
Абсолютный — первым символом в пути идет
/
Относительный — во всех остальных случаях
Когда мы используем относительный путь, команда cd
считывает его и внутри себя пытается вычислить абсолютный путь. Она берет текущую рабочую директорию /Users/guest/ и присоединяет к ней Music. В итоге получается /Users/guest/Music.
Команда cd понимает и абсолютные, и относительные пути. Поэтому передавать ей можно что угодно:
Еще раз проговорим, что абсолютный путь однозначно определяет адрес файла или директории в файловой системе, а относительный — нет.
Поэтому относительный путь стоит использовать только вместе с текущей рабочей директорией, относительно которой он считается. При передаче абсолютного пути не имеет никакого значения, какая сейчас рабочая директория. Если путь существует, то переход произойдет.
Теперь рассмотрим другую задачу. Предположим, что мы находимся в директории /Users/guest/Music. Как выйти из нее и попасть снова в /Users/guest? Мы уже знаем один способ — указать абсолютный путь и сделать cd
:
Но есть путь проще. Можно указать специальное значение ..
и перейти на директорию уровнем выше:
Более того, с помощью этого заполнителя можно выходить на любое количество уровней, указывая ..
через разделитель:
Иногда вместо двух точек используется одинарная точка, которая означает текущую директорию. Например, вместо cd Music
можно писать cd ./Music
— разницы между этими выражениями нет.
Есть и третий вариант возврата в /Users/guest из директории /Users/guest/Music. Можно выполнить команду cd
без аргументов, тогда мы перейдем в домашнюю директорию текущего пользователя:
Ну и, наконец, четвертый вариант. Домашняя директория пользователя имеет специальное обозначение — ~
(тильда). В момент выполнения команды тильда заменяется на абсолютный путь. Поэтому из любого места можно напрямую перейти в любую поддиректорию домашней директории:
Допустим, вы находитесь в домашней директории и хотите посмотреть файлы в поддиректории Music. Один способ вы уже знаете — для этого нужно перейти в директорию Music и выполнить программу ls
.
Как обычно, есть другой способ. Команда ls также может принимать на вход аргумент — директорию, которую нужно проанализировать:
Как и в случае с командой 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 .