.bashrc别名中出现意外EOF



在我的.bashrc 中包含这一行后,我收到了一个意外的文件结尾错误

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

从回波到xclip的期望出口是:

HT_R8'%

正如你可能猜到的,这是一个密码,我不能更改它,所以:

如何从密码中转义单引号字符以修复EOF错误?

此外,我不确定单引号是否是这里唯一的问题,"?"one_answers"%"也可以用有趣的方式解释吗?

在bash中不能直接转义单引号中的单引号。但是,由于bash连接相邻的字符串,因此可以使用此构造来代替'text'"'"'moretest'。实际上,您可以用一个单引号结束单引号字符串,然后立即添加一个双引号单引号,然后添加字符串的剩余部分(用单引号)。在您的特定示例中,命令看起来如下:

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

关于这个话题的更多讨论可以在这里找到:如何在单引号字符串中转义单引号?

编辑:添加了@GordonDavisson 注意到的缺失反弹

别名用于短文本替换,而不是完整的shell命令。使用一个函数:

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