我正在使用mingw。
$ sed -i "s/a/b/" test.txt
sed: preserving permissions for `./sed003480': Permission denied
我可以在当前目录中触摸/rm 文件。
我正在使用mingw。
$ sed -i "s/a/b/" test.txt
sed: preserving permissions for `./sed003480': Permission denied
我可以在当前目录中触摸/rm 文件。
这是由 Windows 安全设置引起的。
从上下文菜单中打开文件夹的属性设置。在 Security 选项卡中,单击Edit ,在弹出窗口中按Add...并将您的用户添加到列表中,在Allow列中选中Full Control 。按OK两次以应用更改。
对我来说,文件夹是只读的。取消选中只读选项可以解决我的问题。感谢 Zenadix 的评论
在 Windows 10 WSL 上,我遇到了类似的问题。该问题是由 VS 代码打开并显然使用该文件引起的。关闭 VS 代码解决了我的问题。
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