Как я могу отменить последнюю команду CD?

77

Есть ли способ вернуться к предыдущему рабочему каталогу после выполнения cdв другом каталоге?

Мой вариант использования заключается в том, что я просматриваю структуру каталогов для проекта Java и ожидаю, что текущий каталог имеет только один подкаталог. Итак, я печатаю cdи нажимаю Tabи Enterдовольно быстро. Однако произошел Tabсбой, как я ошибочно ожидал, один подкаталог, хотя на самом деле их больше. Итак, я только что выполнил cdи теперь в моем домашнем каталоге, а не в проекте Java. Есть ли способ отменить это cdи вернуться в каталог, в котором я был?

nickb
источник

Ответы:

130

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

ImaginaryRobots
источник
10
Ну ... даже после нескольких лет работы в Ubuntu я этого не знал. Спасибо
andybleaden
19

cd - отлично подходит для возврата на один уровень, но если вы захотите вернуться на несколько уровней, посмотрите этот скрипт:

acd_func.sh

Это здорово. cd --например, чтобы увидеть свою историю и cd -3вернуться на 3 уровня назад.

декан
источник
Ух ты ... ссылка на город. Теперь есть URL, который я не видел долгое время. <insert Obi-wan JPG>
Майкл Батлер
1
суть этого комментария. <jpg Вставка Йоды>
Донбхупи
15

Вы также можете использовать pushdи popdиспользовать стек каталогов :)

Некоторая информация здесь

Синан Болел
источник
5

Кроме того, cd ..может принять вас обратно в рабочий каталог в родительском каталоге , а затем в случае необходимости команда может повторяться до тех пор , пока туда, где вы хотите быть. Фактически, каждый раз, когда он вызывается, он возвращает вас через дерево каталогов, которое в конечном итоге заканчивается /(корневой каталог), если вы просто продолжаете повторять команду.

В отличие , на cd -самом деле делает предыдущий рабочий каталог текущий рабочий каталог, (который известен как .), и который точное местоположение в файловой системе можно найти с pwd.

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


источник
-1

Лучший способ сделать это для возврата назад cd -, однако, если вы хотите пропустить много уровней одновременно, лучше использовать cd ..для одного уровня cd ../.., для двух, cd ../../..для трех и далее ... хороший способ сделать это быстро, это сценарий:

#!/bin/bash
printf "Number of folders to move back: "
read TIMES
BACKCHARS=../
BACK=$(for i in `seq $TIMES`; do printf $BACKCHARS; done)
cd $BACK
user258456
источник
1
Запуск cdв скрипте не влияет на родительскую оболочку. Вам нужно поместить это в функцию оболочки, чтобы это было полезно.
17
как это:up(){ local n="$1"; while ((n--)); do path+='../'; done; cd "$path"; }
wjandrea