通过SSH远程运行sed:可能引用问题

时间:2014-05-20 14:35:17

标签: bash ssh sed

我想在多个主机上通过SSH远程在/ etc / bashrc中进行替换。

ssh myhost sed 's/\\u\@\\h/\\u\@\\h (myhost)/' /etc/bashrc

给了我这个错误:

bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `sed s/\\u\@\\h/\\u\@\\h (myhost)/ /etc/bashrc'

它直接在myhost上运行时没有错误。

2 个答案:

答案 0 :(得分:2)

本地shell将删除单引号,以便远程主机看到以下命令行:

sed s/\\u\@\\h/\\u\@\\h (myhost)/ /etc/bashrc

你需要在本地方面额外引用一层,这也需要额外的反斜杠转义。

ssh myhost "sed 's/\\\\u\\@\\\\h/\\\\u\\@\\\\h (myhost)/' /etc/bashrc"

答案 1 :(得分:-1)

尝试添加

  

在括号前你也不必使用:

 sed 's/something/another/'

您可以使用以下任何内容:

 sed 's:something:another:'
 sed 's|something|another|'

或其他几个进行分离,在使用

时不必使用反斜杠
  

//文件夹/