하나의 중복 폴더 구조에서 다른 중복 폴더 구조로 디렉토리를 변경하는 쉬운 방법이 있습니까?

하나의 중복 폴더 구조에서 다른 중복 폴더 구조로 디렉토리를 변경하는 쉬운 방법이 있습니까?

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

저는 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전환을 수행합니다 . 몇 가지 확인을 통해 기능 이름을 지정할 수 있습니다 .devstagingcd

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

또는 :kshzsh

cd dev staging

관련 정보