우리 서버에는 테스트, 스테이징 및 프로덕션을 위한 여러 개의 중복 폴더 구조가 있습니다. 사소한 변경을 제외하면 폴더 구조는 일반적으로 세 가지 모두 동일합니다.
저는 WordPress 플러그인을 개발할 때 개발 폴더 구조(예: ~/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
현재 디렉터리 경로를 사용하여 새 디렉터리를 탐색하는 명령을 실행합니다. 분명히 새 폴더에 올바른 구조가 포함되어 있지 않으면 오류가 발생합니다.
전체 디렉토리 구조를 입력하는 데 멈췄습니까? 아니면 더 좋은 방법이 있나요?
답변1
문자열 교체를 사용하십시오 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
이는 두 개의 매개변수를 제외한 모든 경우에 일반적인 동작을 유지합니다.
답변2
이 기능을 디렉토리에 추가한 .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
}
답변3
또는 :ksh
zsh
cd dev staging