Введение
pushd и popd — это команды, позволяющие работать со стеком каталогов и изменять текущий рабочий каталог в Linux и других Unix-подобных операционных системах.
В этом руководстве мы покажем вам, как использовать команды pushd и popd для навигации по дереву системных каталогов.
Стек каталогов
Стек каталогов — это список каталогов, который был изучен ранее. Содержимое стека каталогов можно просмотреть с помощью команды dirs. Каталоги добавляются в стек при переключении на каталог с помощью команды pushd и удаляются с помощью команды popd.
Текущий рабочий каталог всегда находится наверху стека каталогов. Текущий рабочий каталог — это каталог (папка), в котором в данный момент работает пользователь. Всякий раз, когда вы взаимодействуете с командной строкой, вы работаете в каталоге.
Команда pwd позволяет узнать, в каком каталоге вы сейчас находитесь.
При просмотре файловой системы используйте клавишу Tab для автоматического заполнения имен каталогов. Добавление косой черты к имени каталога необязательно.
pushd, popd и dirs являются встроенными командами оболочки, и их поведение может незначительно отличаться от оболочки к оболочке.
Команда Pushd
Синтаксис команды pushd следующий:
pushd [OPTIONS] [DIRECTORY]
Например, чтобы сохранить текущий каталог в верхней части стека каталогов и изменить его на /var/www, введите:
pushd /var/www
В случае успеха приведенная выше команда печатает стек каталогов. ~ — это каталог, в котором мы запустили команду pushd. Символ тильды ~ означает «домашний каталог».
Вы должны получить выходное сообщение, подобное следующему:
/var/www ~
pushd сначала сохраняет текущий рабочий каталог на вершину стека, а затем переключается на указанный каталог. Поскольку текущий каталог всегда должен находиться на вершине стека, после изменения новый текущий каталог перемещается на вершину стека, но не сохраняется в стеке. Чтобы сохранить его, вам нужно использовать pushd из текущего местоположения. Если вы используете cd для перехода в другой каталог, вершина стека будет потеряна,
Добавим в стек еще один каталог:
pushd /opt
Вы должны получить выходное сообщение, подобное следующему:
/opt /var/www ~
Чтобы избежать изменения изменения каталога, используйте параметр -n. Например, чтобы добавить каталог /usr/local в стек, но без изменения текущего каталога, введите:
pushd -n /usr/local
Поскольку текущий каталог (который всегда находится вверху) не изменяется, каталог /usr/local добавляется как второй сверху стека.
Вы должны получить выходное сообщение, подобное следующему:
/opt /usr/local /var/www ~
pushd принимает два параметра + N и -N, которые позволяют вам перейти к N -му каталогу стека. Параметр + N заменяет N -й элемент списка стека, считая слева направо, начиная с нуля. Когда используется опция -N, направление счета справа налево.
Чтобы лучше проиллюстрировать параметры, давайте распечатаем текущий стек каталогов:
dirs -l -v
Вывод покажет индексированный список стека каталогов:
0 /opt
1 /usr/local
2 /var/www
3 /home/noviello
Если вы хотите перейти в каталог /var/www и вывести его на вершину стека, вы будете использовать один из следующих вариантов.
При счете сверху вниз (или слева направо) индекс каталога равен 2.
pushd +2
При подсчете снизу вверх индекс каталога /var/www равен 1.
pushd -1
При использовании без аргументов pushd будет переключаться между первыми двумя каталогами и сделает текущим новый корневой каталог. Это то же самое, что и при использовании команды cd -.
Команда Popd
Команда popd имеет следующий вид:
popd [OPTIONS]
При использовании без аргументов popd удаляет корневой каталог из стека и переходит в новый корневой каталог.
Например, если у нас есть следующий стек каталогов:
/opt /usr/local /var/www /etc/nginx ~
Если запустить команду popd, она удалит /opt из стека и переключится в каталог /usr/local:
popd
Вывод покажет новый стек каталогов:
/usr/local /var/www /etc/nginx ~
Параметр -n отменяет изменение каталога по умолчанию и удаляет второй элемент из стека:
popd -n
Вы должны получить выходное сообщение, подобное следующему:
/usr/local /etc/nginx ~
Как и команда pushd, popd также принимает опции + N и -N, которые можно использовать для удаления N -го каталога стека.
popd +1
Вы должны получить выходное сообщение, подобное следующему:
/usr/local ~
Вывод
В этом уроке мы увидели, как использовать команды Pushd и Popd.