Есть ли простой способ сменить каталоги из одной структуры дубликатов папок в другую?

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

Когда я работаю над плагином WordPress, я глубоко в структуре папок разработки (ex ~/dev/com/wp-content/plugins/myplugin ). Я знаю, что существует ~/staging/com/wp-content/plugins/myplugin .

Если мой текущий рабочий каталог ~/dev/com/wp-content/plugins/myplugin , могу ли я как-то легко переключиться на ~/staging/com/wp-content/plugins/myplugin без ввода всей структуры каталогов?

Я хотел бы набрать что-то вроде cdx ~/staging или даже cdx ../../../../../staging и попросить команду пропустить новый каталог, используя мой текущий путь к каталогу. Очевидно, что если новая папка не содержит правильной структуры, она будет ошибочной.

Я застрял, набрав всю структуру каталогов? Или есть лучший способ?

3 Solutions collect form web for “Есть ли простой способ сменить каталоги из одной структуры дубликатов папок в другую?”

Используйте замену строк в bash :

 $ a="~/dev/com/wp-content/plugins/myplugin" $ echo ${a/dev/staging} ~/staging/com/wp-content/plugins/myplugin 

Таким образом, функция типа:

 cdx () { cd "${PWD/$1/$2}" } 

И затем сделайте cdx dev staging чтобы переключиться с папки в dev на staging . С некоторыми проверками вы можете назвать функцию cd :

 cd () { if [ $# != 2 ] then builtin cd "$@" else builtin cd "${PWD/$1/$2}" fi } 

Эффект:

 ~ # cd /tmp /tmp # cd tmp srv /srv # cd ~ # cd - /srv /srv # cd tmp var /srv # 

Это сохраняет обычное поведение cd во всех случаях, за исключением двух аргументов.

Добавьте эту функцию в свой .bash_profile и набрав cdstaging вы сможете изменить любой каталог внутри ~/dev на эквивалент на ~/staging стадии.

Конечно, вы можете изменить название для всего, что хотите. Кроме того, вы можете создать обратную функцию, просто изменив имя функции и "1s@dev@staging@" на противоположное.

 cdstaging () { OLDPATH=$(pwd | sed -e "1s@$HOME@~@") NEWPATH=$(echo $OLDPATH | sed -e "1s@dev@staging@") cd $NEWPATH } 

В ksh или zsh :

 cd dev staging 
  • Как я могу получить постоянный dirstack с уникальными записями в zsh?
  • Изменение цвета при смене каталога
  • Любой компакт-диск для переключения промежуточного каталога в текущий путь?
  • Как создать короткий путь?
  • Сделать cd следовать символическим ссылкам
  • Как работать с символическими ссылками на каталоги
  • Измените каталог и выполните команду автоматически, затем смените каталог
  • Распределение порядка стека каталога в zsh
  • Использовать символическую ссылку для перенаправления?
  • используя команду cd с переменной
  • Сохранение истории за рабочий каталог (см. Сеанс оболочки)
  • Linux и Unix - лучшая ОС в мире.