Я пишу оболочку script, которая нуждается в cd
для некоторого местоположения. Есть ли способ вернуться к предыдущему местоположению, т.е. Было выполнено местоположение до cd
?
Вернуться в предыдущее место после команды "cd"?
Ответ 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 к содержимому файлов.