Remove o último espaço do alias

3

Eu quero criar um alias para xfreerdp, e eu preciso concatenar o parâmetro / v: em meu alias com o nome do servidor, que obviamente estou fornecendo ao invocar esse alias.

Alias:

alias r='xfreerdp /u:user /p:password /w:1300 /h:768 /sec:rdp /cert-ignore +cliprdr --plugin rdpsnd --plugin rdpdr --data disk:media:/tmp/RDP /v:'

Bash:

r mywindows.server.com

Resultado:

  

tcp_connect: getaddrinfo (erro de uso associado ao nome)   negociação de segurança de protocolo ou falha de conexão

Existe uma maneira de concatenar seu alias bash com o próximo parâmetro?

Obrigado antecipadamente.

    
por Carlos Eduardo Santos 23.10.2015 / 22:38

3 respostas

4

O problema é que o alias está sendo expandido e executado antes do próximo argumento ser alcançado, portanto, o nome do servidor não está sendo concatenado ao alias expandido.

Neste tipo de casos, você precisa usar uma função:

r_d () { 
xfreerdp /u:user /p:password /w:1300 /h:768 /sec:rdp /cert-ignore +cliprdr --plugin rdpsnd --plugin rdpdr --data disk:media:/tmp/RDP /v:""
}

Agora você pode fazer:

r_d server.foobar.com
    
por heemayl 24.10.2015 / 10:20
1

Você não pode fornecer parâmetros de aliases, MAS pode enganá-lo com xargs ou, mais especificamente, o sinalizador -I , que permite a substituição de string. Neste exemplo eu estou substituindo dizendo para substituir REPLACESTRING com o que xargs recebe.

Alias editados:

alias r='xargs -I REPLACESTRING  xfreerdp /u:user /p:password /w:1300 /h:768 /sec:rdp /cert-ignore +cliprdr --plugin rdpsnd --plugin rdpdr --data disk:media:/tmp/RDP /v:REPLACESTRING'

Nota: não sei como seu comando xfreerdp funciona, notei outros sinalizadores como /p:password não deixa espaços entre o sinalizador e o campo de dados, portanto, ajuste /v: e REPLACESTRING espaçamento conforme achar necessário.

Corra assim:

r <<< "server.somedomain.com"

ou

echo "server.somedomain.com" | r
    
por Sergiy Kolodyazhnyy 24.10.2015 / 11:06
0

Use a função como alias em vez de apenas o comando. Então você pode usar o parâmetro no corpo da função como é descrito em outra resposta .

    
por honza-kasik 23.10.2015 / 22:57