我,包括我的.bashrc此行后得到的文件错误的意外结束意外结束
alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'
从呼应XCLIP所需的退出是:
HT_R8 “%
正如你可能已经猜到,这是一个密码,我不能改变它,以便:
如何从密码内部转义单引号字符来修复EOF错误?
此外,我不确定单引号是否是唯一的问题,可以“?”和“%”也可以用有趣的方式解释?
我,包括我的.bashrc此行后得到的文件错误的意外结束意外结束
alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'
从呼应XCLIP所需的退出是:
HT_R8 “%
正如你可能已经猜到,这是一个密码,我不能改变它,以便:
如何从密码内部转义单引号字符来修复EOF错误?
此外,我不确定单引号是否是唯一的问题,可以“?”和“%”也可以用有趣的方式解释?
您不能在bash中的单引号内直接转义单引号。但是,由于bash会连接相邻的字符串,因此可以使用此构造来代替'text'"'"'moretest'
。实际上,您使用单引号结束单引号字符串,并立即添加双引号单引号,然后添加剩余字符串(用单引号引起来)。在您的具体示例中,命令是这样的:
alias domsrv01='echo -e ?HT_R8\'"'"'% | xclip ; ssh 10.50.0.35'
的话题更多的讨论是源泉在这里:How to escape single-quotes within single-quoted strings?
编辑:添加人@GordonDavisson
或''text'\''moretest''(与'alias'命令相同,没有参数输出。) – anishsane
由于某些原因,这仍然失败。试试这个:alias test1 ='echo -e?HT_R8'“'”'%| xclip | xclip -o'。它应该将回显输出返回给xclip,但它不会。 – sergei
@sergei你是对的,它不是......解决方法可能是使用像'test2(){echo -e'?HT_R8'''''''''这样的函数。 xclip | xclip -o; ''。 (如果使用相同的名称,则首先取消现有别名) – user000001
别名是注意到缺少反弹旨在用于短文本替换,而不是完整的shell命令。使用功能:
domsrv01() {
echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35
}
这个别名文件开始作为100多个服务器的连接管理器的懒惰替换。我可能需要在未来的某个时候转移职能,所以我会牢记这一点。 – sergei
这是怎么回事? 'alias domsrv01 =“echo -e \”?HT_R8 \'%\“| xclip; ssh 10.50.0.35”' – fedorqui
所以你刚刚发布你的*密码*? – devnull
@devnull当然不是确切的密码,但它仍然包含与原始相同的特殊字符。 – sergei