【问题标题】:permission denied when sed in place edit in mingw在 mingw 中进行 sed 就地编辑时权限被拒绝
【发布时间】:2013-01-14 04:23:40
【问题描述】:

我正在使用 mingw。

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

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

【问题讨论】:

标签: mingw


【解决方案1】:

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

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

【讨论】:

  • 也许在英文 Windows 中称为“完全控制”。
  • @Jacob - 我也有这个。对我来说,解决方法是使用 git-scm.com/download/win 附带的 git bash 而不是 sourcetree 附带的 mingw。 git 是 64 位的,而 sourcetrees 是 32 位的,不确定这是否是唯一的区别。
  • 在 Windows 7 上使用 64 位 Git Bash 也适用于我
【解决方案2】:

对我来说,文件夹是只读的。取消选中只读选项可以解决我的问题。感谢 Zenadix 的评论

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      TL;DR:已使用 sudo


      就我而言,我正在运行一个在 Windows 子系统 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多