
우리 서버에는 테스트, 스테이징 및 프로덕션을 위한 여러 개의 중복 폴더 구조가 있습니다. 사소한 변경 사항을 제외하면 세 가지 모두의 폴더 구조는 일반적으로 동일합니다.
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