При работе в командной строке Linux для перехода в другую директорию используется команда cd.
Для вывода текущей рабочей директории используется команда pwd.
Команда pushd
Когда требуется работа с несколькими директориями, то использование только cd может быть не очень удобно. Здесь приходит на помощь команда pushd
Команда pushd создает стек директорий (папок).
Чтобы добавить произвольную директорию в стек (и сразу же в нее перейти), то нужно дополнительно указать путь до этой директории (символ тильда ~ в путях в Linux означает домашнюю директорию пользователя):
pushd ~/MyData
После выполнения команды, через пробел выводятся директории, находящиеся в стеке.
$ pushd ~/MyData
~/MyData ~/Downloads ~
Важное замечание: На вершине стека всегда размещена текущая директория. То есть, даже если вы не добавляли никаких директорий в стек, то в нем все равно будет содержаться текущая рабочая директория.
Для более удобного просмотра стека можно использовать команду dirs -v
$ dirs -v
0 ~/MyData
1 ~/Downloads
2 ~
Быстрый переход к произвольной директории в стеке
Как видно из вывода команды dirs -v, все папки в стеке пронумерованы. Эти номера можно использовать для быстрого перехода к соответствующей директории.
Перейдем к директории с индексом 2:
cd ~2
Команда popd
Пользователь всегда находится в той директории, которая в текущей момент расположена на вершине стека.
Чтобы извлечь директорию с вершины стека и перейти в директорию, которая окажется следующей (станет вершиной стека), используется команда popd
Вот как это работает:
# Стек пустой (в нем только текущая директория)
$ dirs -v
0 ~
# Помещаем в стек директории dir1, dir2, dir3
$ pushd ~/dir1
~/dir1 ~
$ pushd ~/dir2
~/dir2 ~/dir1 ~
$ pushd ~/dir3
~/dir3 ~/dir2 ~/dir1 ~
# Стек выглядит следующим образом
$ dirs -v
0 ~/dir3
1 ~/dir2
2 ~/dir1
3 ~
# Извлекаем директорию dir3 из стека
# и попадаем в директорию dir2 (она стала вершиной)
$ popd
~/dir2 ~/dir1 ~
# Извлекаем dir2, попадаем в dir1
$ popd
~/dir1 ~
# Извлекаем dir1, попадаем в ~
$ popd
~
Еще пара трюков
Удалить из стека
Чтобы удалить директорию из стека (сама директория, конечно, не удаляется) используется следующая команда. Вместо 3 укажите индекс директории, которую нужно убрать из стека.
popd +3
Переключение туда и обратно
Если выполнять команду pushd без параметров, то можно переключаться между двумя верхними директориями в стеке. Происходит переключение туда и обратно между верхними директориями, остальная часть стека не меняется.
Примечание: Состояние стека хранится только в рамках текущей сессии терминала.
Заключение
Команды pushd, popd и cd помогают для быстрой навигации по директориям.
Мы рассмотрели базовые возможности команд pushd и popd. Дополнительную информацию по их использованию можно получить, выполнив:
pushd --help
popd --help
Комментарии