Альтернатива для CD в Shell Scripting

4

Насколько я знаю, не рекомендуется использовать CD в сценариях оболочки. Я знаю о пушд. Но не смог найти способ двигаться назад. Предположим, в настоящее время я нахожусь в

/Users/PrashastKumar/Documents/finalDiskCleanUp/script/month

и я хочу переехать в

/Users/PrashastKumar/Documents/finalDiskCleanUp/logs

Как это можно сделать. Я пытался использовать popd, но это не работает. Любой альтернативный метод.

Prashast
источник
1
Пожалуйста, объясните, почему вы не используете cdсценарий оболочки и как pushdлучше.
simlev

Ответы:

3

Вы на правильном пути, но пока еще не совсем. Посмотрите на этот пример:

AnAppleADay:~ KeepsTheDoctorAway$ pushd /Users/KeepsTheDoctorAway/Downloads/
~/Downloads ~
AnAppleADay:Downloads KeepsTheDoctorAway$ popd
~
AnAppleADay:~ KeepsTheDoctorAway$

Предпосылка позади pushdи в popdтом , что вы нажимаете папку в стек, а затем , когда вы закончите, вы вытолкнуть его из стека, возвращая к начальной точке.

Для того, чтобы добраться до /Users/PrashastKumar/Documents/finalDiskCleanUp/logsот /Users/PrashastKumar/Documents/finalDiskCleanUp/script/month, все , что вам нужно сделать , это

  1. Вставьте каталог в стек pushd /Users/PrashastKumar/Documents/finalDiskCleanUp/logs
  2. Когда это будет сделано, вытолкните его из стека с помощью popd
td512
источник
Хорошее объяснение, с примером. Можно было бы подумать об этом man pushdи man popdпредоставить такую ​​информацию, но, к сожалению, это не так.
simlev
pushdи popdприходят с некоторыми из тех же предупреждений, что и cd- если что-то пойдет не так, вы можете столкнуться с тем , что части вашего скрипта выполняются в неожиданных местах. Всегда проверяйте наличие ошибок при смене каталогов в скрипте, и если у вас нет хорошего способа восстановления, вероятно, лучше выйти с ошибкой, чем продолжить выполнение в неправильном месте.
Гордон Дэвиссон