【问题标题】:How can i modify a remote file over ssh with sed?如何使用 sed 通过 ssh 修改远程文件?
【发布时间】:2022-01-20 21:39:12
【问题描述】:

我正在尝试在远程服务器上的 JS 文件顶部添加一行 我要运行的命令是:

sed -i "1i\const test = require(\'../../../test/test.json\');" /opt/test.js

所以我尝试了以下方法:

ssh user@host "sed -i "1i\const test = require(\'../../../test/test.json\');" /opt/test.js"

由于“(”和“)”,这给了我一个错误,所以我在它们之前添加了一个“\”:

ssh user@host "sed -i "1i\const test = require\(\'../../../test/test.json\'\);" /opt/test.js"

但是我仍然得到错误:

bash: -c: line 0: syntax error near unexpected token `('

我该如何解决这个问题?

【问题讨论】:

    标签: linux bash unix sed


    【解决方案1】:

    不要使用sed -i(它只是在后台管理一个临时文件),而是使用ed并将脚本(通过ssh)提供给ed的标准输入。

    ssh user@host 'ed /opt/test.js' <<'EOF'
    1i
    const test = require('../../../test/test.json');
    .
    wq
    EOF
    

    【讨论】:

    • 谢谢,这很好用,但它不允许我在字符串中添加变量。如果您将 test 更改为 $test 和 test=123 ,您知道我如何使它将变量写入文件吗?
    • 我引用了EOF 分隔符,假设您不想进行这样的替换。只需使用EOF 而不是'EOF'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2018-09-09
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多