2013-07-12 201 views
1

我,包括我的.bashrc此行后得到的文件错误的意外结束意外结束

alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35' 

从呼应XCLIP所需的退出是:

HT_R8 “%

正如你可能已经猜到,这是一个密码,我不能改变它,以便:

如何从密码内部转义单引号字符来修复EOF错误?

此外,我不确定单引号是否是唯一的问题,可以“?”和“%”也可以用有趣的方式解释?

+1

这是怎么回事? 'alias domsrv01 =“echo -e \”?HT_R8 \'%\“| xclip; ssh 10.50.0.35”' – fedorqui

+0

所以你刚刚发布你的*密码*? – devnull

+1

@devnull当然不是确切的密码,但它仍然包含与原始相同的特殊字符。 – sergei

回答

1

您不能在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

+0

或''text'\''moretest''(与'alias'命令相同,没有参数输出。) – anishsane

+1

由于某些原因,这仍然失败。试试这个:alias test1 ='echo -e?HT_R8'“'”'%| xclip | xclip -o'。它应该将回显输出返回给xclip,但它不会。 – sergei

+0

@sergei你是对的,它不是......解决方法可能是使用像'test2(){echo -e'?HT_R8'''''''''这样的函数。 xclip | xclip -o; ''。 (如果使用相同的名称,则首先取消现有别名) – user000001

1

别名是注意到缺少反弹旨在用于短文本替换,而不是完整的shell命令。使用功能:

domsrv01() { 
    echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35 
} 
+0

这个别名文件开始作为100多个服务器的连接管理器的懒惰替换。我可能需要在未来的某个时候转移职能,所以我会牢记这一点。 – sergei