当使用Sed时,权限被拒绝

我正在使用Sed来查找并replace文件中的string。 这是第一次使用它,所以我可能做错了,

我有一个名为“test.properties”的“root”所拥有的文件,我想用“cat”replace“world”。

所以我运行这个命令:

sudo sed s/world/cat/ <test.properties >newtest.properties 

它工作的很好,但是当我想写这样的SAME文件:

 sudo sed s/world/cat/ <test.properties >test.properties 

它说“-bash:test.properties:权限被拒绝”,但我使用“sudo”,为什么被拒绝?

不要运行你试图运行的命令

如果您尝试将输出从sedredirect到同一个文件,则会将其清空,删除所有文件内容。 尝试这样的事情:

 sed s/world/cat/ <test.properties >newtest.properties && sudo mv newtest.properties test.properties 

由于命令的redirect部分不是通过sudo运行,而是以普通用户身份运行,所以您获取权限被拒绝。

第一个命令的作用是因为你只是读第一个文件并写入你自己的文件,所以你的普通用户可以做到这一点。

 sudo sed -is/world/cat/ test.properties