Есть ли способ вернуться к предыдущему рабочему каталогу после выполнения cd
в другом каталоге?
Мой вариант использования заключается в том, что я просматриваю структуру каталогов для проекта Java и ожидаю, что текущий каталог имеет только один подкаталог. Итак, я печатаю cd
и нажимаю Tabи Enterдовольно быстро. Однако произошел Tabсбой, как я ошибочно ожидал, один подкаталог, хотя на самом деле их больше. Итак, я только что выполнил cd
и теперь в моем домашнем каталоге, а не в проекте Java. Есть ли способ отменить это cd
и вернуться в каталог, в котором я был?
command-line
bash
nickb
источник
источник
cd -
отлично подходит для возврата на один уровень, но если вы захотите вернуться на несколько уровней, посмотрите этот скрипт:acd_func.sh
Это здорово.
cd --
например, чтобы увидеть свою историю иcd -3
вернуться на 3 уровня назад.источник
Вы также можете использовать
pushd
иpopd
использовать стек каталогов :)Некоторая информация здесь
источник
Кроме того,
cd ..
может принять вас обратно в рабочий каталог в родительском каталоге , а затем в случае необходимости команда может повторяться до тех пор , пока туда, где вы хотите быть. Фактически, каждый раз, когда он вызывается, он возвращает вас через дерево каталогов, которое в конечном итоге заканчивается/
(корневой каталог), если вы просто продолжаете повторять команду.В отличие , на
cd -
самом деле делает предыдущий рабочий каталог текущий рабочий каталог, (который известен как.
), и который точное местоположение в файловой системе можно найти сpwd
.Таким образом, и то,
cd ..
и другоеcd -
может быть полезно в различных обстоятельствах при навигации по дереву каталогов, хотя они отличаются в вышеупомянутых отношениях. Пожалуй, самая полезная команда после экспериментов с этими двумя командамиcd
возвращает вас в домашнюю папку.источник
Лучший способ сделать это для возврата назад
cd -
, однако, если вы хотите пропустить много уровней одновременно, лучше использоватьcd ..
для одного уровняcd ../..
, для двух,cd ../../..
для трех и далее ... хороший способ сделать это быстро, это сценарий:источник
cd
в скрипте не влияет на родительскую оболочку. Вам нужно поместить это в функцию оболочки, чтобы это было полезно.up(){ local n="$1"; while ((n--)); do path+='../'; done; cd "$path"; }