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


77

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

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

Ответы:


130

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


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

19

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

acd_func.sh

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


Ух ты ... ссылка на город. Теперь есть URL, который я не видел долгое время. <insert Obi-wan JPG>
Майкл Батлер

1
суть этого комментария. <jpg Вставка Йоды>
Донбхупи


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

1
Запуск cdв скрипте не влияет на родительскую оболочку. Вам нужно поместить это в функцию оболочки, чтобы это было полезно.
17

как это:up(){ local n="$1"; while ((n--)); do path+='../'; done; cd "$path"; }
wjandrea
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.