Может быть хорошее время, чтобы выучить pushd и popd!Мне нравится использовать их вместо cd в скриптах, поэтому, если что-то ломается, оно немного лучше зависит от контекста.Кроме того, после успешной работы вы вернетесь в исходный каталог.
Примечание. Камень преткновения, с которым вы можете столкнуться, - это создание «списка» каталогов.Мы можем создать этот «список», используя возможности bash для сопоставления с образцом.Например, если мы знаем, что ВСЕ каталоги, которые вы хотите включить в свой «список», должны начинаться с шаблона «test», мы можем просто добавить «test *» в ваш текущий рабочий каталог.
Давайтескажем, мой cwd это / home / ben, и здесь есть 5 директорий [test1, test2, test3, test4, test5] Чтобы создать полный список (и одновременно просмотреть этот список), мы можем просто сделать это:
for dir in /home/ben/test*; do cd ${dir}; pwd; done # Visit each dir in our little list
вывод:
/ home / ben / test1 / home / ben / test2 / home / ben / test3 / home / ben / test4 / home / ben / test5
Этот маленький фрагмент кода делает то же самое, но использует pushd и popd для просмотра списка тестовых * dirs.
for dir in /{your_path_prefix_here}/test*; do
pushd ${dir} >/dev/null # We've arrived in this directory, and it's now in your stack. (hide the output, which displays your directory stack)
### Run whatever command you want, and then...
popd >/dev/null # Now you're right back where you were!
done