Подтвердить что ты не робот

Вернуться в предыдущее место после команды "cd"?

Я пишу оболочку script, которая нуждается в cd для некоторого местоположения. Есть ли способ вернуться к предыдущему местоположению, т.е. Было выполнено местоположение до cd?

4b9b3361

Ответ 1

Вы можете просто сделать

cd -

который вернет вас в предыдущее местоположение.

Некоторые оболочки позволяют использовать команды pushdir/popdir, проверить этот сайт. Вы также можете найти этот вопрос SO полезным.

Ответ 2

Если вы работаете внутри script, вы также можете запустить часть script внутри подпроцесса, у которого будет личное значение $PWD.

# do some work in the base directory, eg. echoing $PWD
echo $PWD

# Run some other command inside subshell
( cd ./new_directory; echo $PWD )

# You are back in the original directory here:
echo $PWD

У этого есть свои преимущества и недостатки... он отлично изолирует каталог, но нерегулярные подпроцессы могут быть дорогими, если вы делаете это много. (EDIT: как показано ниже, @Norman Gray указывает, что штраф за выполнение нерегулярности подпроцесса, вероятно, не очень дорог по сравнению с тем, что еще происходит в остальной части script)

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

Ответ 3

Вы можете повторить PWD в переменной, а cd - на эту переменную. Это может быть тише.

Ответ 4

Другой альтернативой является небольшой набор функций, которые вы можете добавить в свой .bashrc, которые позволяют перейти к именованным каталогам:

# cd /some/horribly/long/path
# save spud
# cd /some/other/horrible/path
# save green
...
# go spud
/some/horribly/long/path

Это описано в Инструмент производительности навигации по каталогам, но в основном включает сохранение вывода "pwd" в названную мнемонику ( "spud" ) и "зеленый" ) в приведенном выше случае, а затем cd'ing к содержимому файлов.