在命令中使用引号和双引号设置别名

14

我想为这个命令设置一个别名:

expect -c 'spawn ssh usr@ip -p 57022 ; expect password ; send "pass\n" ; interact'

但是alias alias_name=""与命令中的引号不兼容。

我尝试使用'"和`进行组合,但所有尝试都失败了。 我该怎么做?


1
哈哈,不是的,我10个月前就问过这个问题了。 - voy
你说得没错,但是另一个问题的浏览量和赞数更高,并且有更好的答案 - 最好从这里指向那个问题,而不是反过来。 - LangeHaare
如果新问题更好或有更好的答案,那么请投票将旧问题标记为新问题的重复。 (抱歉,不是针对您的问题,但其他问题上的答案更好) - LangeHaare
1个回答

27
一个简单的解决方案是创建一个函数,而不是别名:
function function_name() {

    expect -c 'spawn ssh usr@ip -p 57022 ; \
        expect password ; send "pass\n" ; interact'

}

你可以调用function_name,它的效果与别名一样好。

如果你仍然想使用别名,只需转义内部的"

alias alias_name="expect -c 'spawn ssh usr@ip -p 57022 ; expect password ; send \"pass\n\" ; interact'"

并且它应该可以正常工作。


1
太好了,函数运行得很好!但是引号转义失败了(bash: !Ak\n": event not found)。非常感谢 :) - voy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接