我正在尝试绑定Alt-s
到一个非常复杂的SSH命令,该命令需要嵌套的双引号。
bind '"\es":"ssh -t me@myserver \"echo \\"hi\\"; echo \\"bye\\"\""'
但是当我执行键绑定时,字符串会被截断:
ssh -t me@myserver "echo \"hi\";
如何获取要插入的整个字符串?我不知道这是半冒号后的空格还是双引号的所有双引号是否存在问题。
注意:我不想使用bind -x
样式,因为a)不会打印实际的命令b)在没有按回车键执行该行之前就无法对其进行手动修改的情况下执行该命令。
转义shell字符串很棘手。尝试:
bind '"\es":"ssh -t localhost \"echo \\\"hi\\\"; echo \\\"bye\\\"\""'
执行上述命令后,Esc-s应在命令行上显示以下文本:
ssh -t localhost "echo \"hi\"; echo \"bye\""
这将正常工作。执行后,将产生输出:
hi
bye
Connection to localhost closed.
问题是,这\\"
被解释为单个反斜杠,后跟一个shell活动双引号。您需要转义双引号以使其处于非活动状态。这样\\\"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句