Alias de bash com um espaço como parte do comando

11

Estou tentando criar um alias bash, onde o próprio alias tem um espaço.

A ideia é que o alias (por exemplo, con ) represente sudo openvpn --config /path/to/my/openvpn/configs/ . O que resulta em um comando legível, quando o con alias é usado.

, por exemplo: 'con uk.conf' == 'sudo openvpn --config /path/to/my/openvpn/configs/uk.conf'

Entendo que não posso declarar o alias assim: %código%. As funções bash funcionariam nesse cenário? Eu nunca ouvi falar disso, mas ao pesquisar uma solução para esse problema menor.

    
por boolean.is.null 03.12.2015 / 13:34

1 resposta

12

Sim, você precisará usar uma função. Um alias funcionaria se você quisesse adicionar um parâmetro, quaisquer argumentos dados a aliases são passados como argumentos para o programa com alias, mas como parâmetros separados , não simplesmente anexados ao que está lá. Para ilustrar:

$ alias foo='echo bar'
$ foo
bar
$ foo baz
bar baz

Como você pode ver, o que foi ecoado foi bar baz e não barbaz . Como você deseja concatenar o valor que você passa para o parâmetro existente, você precisará de algo como:

function com(){ sudo openvpn --config /path/to/my/openvpn/configs/"$@"; }

Adicione a linha acima ao seu ~/.bashrc e você está pronto para começar.

    
por 03.12.2015 / 13:52