Linux: 쉘 스크립트를 사용하지 않고도 복잡한 cd 명령에 대한 바로가기를 만들 수 있습니까?

Linux: 쉘 스크립트를 사용하지 않고도 복잡한 cd 명령에 대한 바로가기를 만들 수 있습니까?

제가 작업하는 서버에서는 항상 디렉토리에서 작업해야 합니다 /foo/bar. 해당 디렉토리에는 사이트 디렉토리 목록이 있습니다. 각자 안에그것들디렉토리는 각 개발자를 위한 디렉토리입니다. 따라서 트리는 다음과 같습니다.

/foo/bar/
         site1/
               userA/
               userB/
               userC/
         site2/
               userA/
               userB/
               userC/
         site3/
               userA/
         ...

.bash_profile에 루트 디렉터리에 대한 별칭을 설정했으므로 fb=/foo/bar내 작업 흐름은 다음과 같습니다.

$ cd $fb
$ cd site2
$ cd userA

첫 번째와 세 번째 줄은 절대 바뀌지 않습니다. 저는 항상 userA변경한 사이트 디렉터리의 디렉터리로 이동합니다.

내 질문: 이것을 쉘 스크립트로 빌드할 필요 없이 "site2" 매개변수만 전달하는 단일 명령으로 압축하는 영리한 방법이 있습니까? 아니면 쉘 스크립팅이 유일한 방법입니까?

답변1

Bash 기능으로 할 수 있는 일이 몇 가지 있습니다.

site() {
    cd /foo/bar/site${1}/userA
}

이것을 .bashrc에 넣고 이렇게 호출하세요.

site 2

/foo/bar/site2/userA로 이동합니다.

답변2

이와 같은 bash 기능을 사용하십시오.

function myCD() {
   local site
   local user
   case $# in
     0)  read -p site: site
         read -p user: user
         ;;
     1|2)
        site=${1}
        user=${2:-userA}
        ;;
    *)
       echo "don't accept more as 2 arguments" >&2
       return 1
       ;;
   esac
   cd ${fb}/${site}/${user}
}

답변3

다음과 같은 별칭을 사용할 수도 있습니다.

alias site2="cd /foo/bar/site2/userA"

CDPATH 환경 변수를 확인할 수도 있습니다. 쉘의 매뉴얼 페이지를 참조하십시오.

답변4

홈 디렉터리에 연결하기만 하면 됩니다.

ln -s /foo/bar/site{$1}/userA ~/workspace/$1

이렇게 하면 모두 사용자에게 로컬로 표시됩니다. 새 사이트를 추가하기 전에 기다릴 필요가 없습니다.

또는 내가 한 일을 수행하십시오. SSH를 통해 로컬 워크스테이션의 홈 디렉토리에 직접 설치하십시오. IDE 등 무엇이든 일반적으로 더 효율적입니다.

mkdir ~/workspace/site1
sshfs -o idmap=user $USER@server:/foo/bar/baz/site1/userA ~/workspace/site1

제거하려면,

fusermount -u ~/workspace/site1

~에서우분투 도움말

이것을 로그인 스크립트와 빙고에 넣으면 모든 작업 공간이 우리에게 속합니다!

관련 정보