我想在多个主机上通过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上运行时没有错误。
答案 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|'
或其他几个进行分离,在使用
时不必使用反斜杠//文件夹/