제가 작업하는 서버에서는 항상 디렉토리에서 작업해야 합니다 /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
~에서우분투 도움말
이것을 로그인 스크립트와 빙고에 넣으면 모든 작업 공간이 우리에게 속합니다!