cria um alias que executa um comando com substituição de string dos argumentos [duplicado]

0

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?

    
por P-Q 23.01.2014 / 11:39

1 resposta

1

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
    
por 23.01.2014 / 13:07

Tags