Permissions

使用 Sed 時權限被拒絕

  • May 13, 2011

我正在使用 Sed 查找和替換文件中的字元串。這是第一次使用它,所以我可能做錯了,

我有一個名為“test.properties”的“root”擁有的文件,我想用“cat”替換“world”。

所以我執行這個命令:

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

而且效果很好,但是當我想像這樣寫入 SAME 文件時:

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

它說“-bash:test.properties:權限被拒絕”,但我使用的是“sudo”,為什麼它被拒絕?

不要執行您嘗試執行的命令

如果您嘗試將 sed 的輸出重定向回同一個文件,它會將其清空,從而刪除所有文件內容。嘗試這樣的事情:

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

您獲得權限被拒絕,因為命令的重定向部分不是通過 sudo 執行,而是以普通使用者身份執行。

第一個命令有效,因為您只是讀取第一個文件並寫入您擁有的文件,因此您的普通使用者可以這樣做。

引用自:https://serverfault.com/questions/269243