从别名中删除最后一个空格

从别名中删除最后一个空格

我想为 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

相关内容