Você poderia fazer algo com uma função bash
site() {
cd /foo/bar/site${1}/userA
}
Coloque isso no seu .bashrc e chame como
site 2
irá levá-lo para / foo / bar / site2 / userA
Em um servidor em que trabalho, sempre tenho que trabalhar em um diretório, vamos chamá-lo de /foo/bar
. Nesse diretório é uma lista de diretórios do site. Dentro de cada um dos diretórios esses está um diretório para cada desenvolvedor. Então, a árvore se parece com isso:
/foo/bar/
site1/
userA/
userB/
userC/
site2/
userA/
userB/
userC/
site3/
userA/
...
Eu configurei um alias para o diretório raiz em meu .bash_profile, fb=/foo/bar
, então meu fluxo de trabalho é assim:
$ cd $fb
$ cd site2
$ cd userA
A primeira e a terceira linha nunca mudam - sempre vou para o diretório userA
de qualquer diretório de site para o qual eu mude.
Minha pergunta: Existe uma maneira inteligente de compactar isso em um único comando que acabei de passar no argumento "site2" sem ter que construí-lo em um script de shell? Ou o shell script é o único caminho?
Use uma função bash como esta.
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}
}
Basta vinculá-los ao seu diretório pessoal:
ln -s /foo/bar/site{$1}/userA ~/workspace/$1
Dessa forma, todos eles parecerão locais para você. Não é preciso se preocupar até que um novo site seja adicionado.
Ou faça o que eu faço: Montá-los na minha estação de trabalho local via SSH diretamente no meu home-dir .. IDE e tudo o que são o que são, geralmente é mais eficiente.
mkdir ~/workspace/site1
sshfs -o idmap=user $USER@server:/foo/bar/baz/site1/userA ~/workspace/site1
Para desmontar,
fusermount -u ~/workspace/site1
Pop que em seu script de login, bingo, toda a sua base de trabalho são nos pertence!
Você provavelmente poderia usar apenas um alias como
alias site2="cd /foo/bar/site2/userA"
Você também pode querer examinar a variável de ambiente CDPATH. Veja a man page do seu shell.