在mingw中编辑到位时编辑权限被拒绝

时间:2013-01-14 04:23:41

标签: mingw

我正在使用mingw。

  $ sed -i "s/a/b/" test.txt
  sed: preserving permissions for `./sed003480': Permission denied

我可以在当前目录中触摸/ rm文件。

4 个答案:

答案 0 :(得分:40)

这是由Windows安全设置引起的。

从上下文菜单中打开文件夹的“属性”设置。在“安全”选项卡中,单击编辑,在弹出窗口中按添加... 并将用户添加到列表中,选中完全控制允许列中。按确定两次以应用更改。

答案 1 :(得分:1)

对我来说,文件夹是只读的。取消选中readonly选项修复我的问题。感谢Zenadix commment

答案 2 :(得分:0)

TL; DR:已使用sudo


在我的情况下,我正在运行在Windows Subsystem for Linux(WSL)上运行的bash脚本,如下所示:

./generate.sh

该脚本创建了一堆文件,但是由于未知原因,由于某些原因,sed被拒绝修改这些文件的权限:

实际的sed命令用于执行看起来像这样的搜索替换:

grep -rl $PATTERN $PUBLIC_API_FOLDER/ \
    | xargs sed -i 's/$PATTERN/$REPLACE/g'

如您所见,尽管在任何时候都没有提升权限,但我仍然无法修改脚本创建的文件:

sed: preserving permissions for ‘public_api/models/sedt0qk4D’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedOxoc1O’: Operation not permitted
sed: cannot rename public_api/models/sedOxoc1O: Permission denied
sed: preserving permissions for ‘public_api/controllers/sedx5BafW’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedVkdqzc’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedLvyS3s’: Operation not permitted
sed: cannot rename public_api/models/sedLvyS3s: Permission denied
sed: preserving permissions for ‘public_api/controllers/sedE7GSe8’: Operation not permitted
sed: cannot rename public_api/controllers/sedE7GSe8: Permission denied
sed: preserving permissions for ‘public_api/controllers/sednHZBQf’: Operation not permitted
sed: cannot rename public_api/controllers/sednHZBQf: Permission denied

我的解决方案是简单地使用sudo运行脚本。

sudo ./generate.sh

答案 3 :(得分:-1)

在Windows 10 WSL上,我遇到了类似的问题。该问题是由于VS代码被打开并且显然正在使用该文件引起的。关闭VS代码解决了我的问题。