Tente usar uma função em vez de ou como um alias.
Defina a função adicionar a você .bashrc
goto()
{
if [[ $# = 2 ]]
then
cd /var/www/vhosts/$1/subdomains/$2
else
cd /var/www/vhosts/$1
fi
}
Use a função
goto example.com
goto example.com blog
Estou tentando escrever alguns atalhos de atalho para navegar rapidamente para as pastas httpdocs dos vários domínios e subdomínios do meu servidor. basicamente, então eu posso digitar algo como:
$ pwd
/
$ # Go to the 'site.com' domain:
$ goto site.com
$ pwd
/var/www/vhosts/site.com/httpdocs
$ # Go to the 'subsite' subdomain:
$ gotosub site.com subsite
$ pwd
/var/www/vhosts/site.com/subdomains/subsite/httpdocs
Sou bastante ecológico quando se trata de comandos do Linux e tentei pesquisar isso, mas não consegui reunir termos de pesquisa que ajudaram.
Eu tentei usar printf e backticks como este:
$ alias goto=''printf "cd /var/www/vhosts/%s/httpdocs"''
$ alias gotosub=''printf "cd /var/www/vhosts/%s/subdomains/%s/httpdocs"''
mas isso não substitui os argumentos. Se eu remover os backticks:
$ alias goto='printf "cd /var/www/vhosts/%s/httpdocs"'
$ alias gotosub='printf "cd /var/www/vhosts/%s/subdomains/%s/httpdocs"'
Então funciona, mas eu preciso executá-los assim:
$ 'goto site.com'
$ 'gotosub site.com subsite'
... O que parece feio e ineficiente. Qual é a melhor abordagem para conseguir isso?
Tente usar uma função em vez de ou como um alias.
Defina a função adicionar a você .bashrc
goto()
{
if [[ $# = 2 ]]
then
cd /var/www/vhosts/$1/subdomains/$2
else
cd /var/www/vhosts/$1
fi
}
Use a função
goto example.com
goto example.com blog