![从别名中删除最后一个空格](https://linux22.com/image/877092/%E4%BB%8E%E5%88%AB%E5%90%8D%E4%B8%AD%E5%88%A0%E9%99%A4%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E7%A9%BA%E6%A0%BC.png)
我想为 xfreerdp 创建一个别名,并且我需要将别名中的 /v: 参数与服务器名称连接起来,我在调用此别名时显然会提供该名称。
别名:
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:'
重击:
r mywindows.server.com
结果:
tcp_connect:getaddrinfo(无法与名称关联)错误:协议安全协商或连接失败
有没有办法将你的 bash 别名与下一个参数连接起来?
先感谢您。
答案1
问题在于别名在到达下一个参数之前被扩展并执行,因此服务器名称没有连接到扩展的别名。
在这种情况下,您需要使用一个函数:
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:"$1"
}
现在你可以这样做:
r_d server.foobar.com
答案2
使用函数作为别名,而不是仅使用命令。然后,您可以在函数主体中使用参数,如中所述另一个答案。
答案3
您不能提供别名参数,但您可以使用 来欺骗它xargs
,或者更具体地说是它的标志-I
,它允许替换字符串。在此示例中,我正在替换,告诉它用 xargs 收到的任何内容替换 REPLACESTRING。
编辑别名:
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'
注意:不确定您的xfreerdp
命令如何工作,我注意到其他标志(例如,
/p:password
在标志和数据字段之间不留空格),因此请根据需要调整/v:
和 留出空格。REPLACESTRING
像这样运行:
r <<< "server.somedomain.com"
或者
echo "server.somedomain.com" | r