在我的.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
}