rm -r .git
rm -r .git --force
Run Code Online (Sandbox Code Playgroud)
我得到以下信息,在我输入“是”并移动到下一个后,似乎有一个永无止境的供应。
rm -r .git
rm -r .git --force
Run Code Online (Sandbox Code Playgroud)
Ale*_*vey 16
分析解释:
override r--r--r-- ...?当您尝试使用已删除写访问权限的 rm 命令删除一个或多个文件时,会在 rm 命令的某些版本中看到该消息。
重现:
? mkdir -p foo/{bar,baz} ; touch foo/bar/qux
? chmod -R -w foo
? find foo -ls
4305147410 0 dr-xr-xr-x 4 alexharvey wheel 128 24 Mar 18:19 foo
4305147412 0 dr-xr-xr-x 2 alexharvey wheel 64 24 Mar 18:19 foo/baz
4305147411 0 dr-xr-xr-x 3 alexharvey wheel 96 24 Mar 18:19 foo/bar
4305147413 0 -r--r--r-- 1 alexharvey wheel 0 24 Mar 18:19 foo/bar/qux
Run Code Online (Sandbox Code Playgroud)
现在,如果您尝试删除这些文件,系统会询问您是否真的要覆盖此文件模式:
? rm -r foo
override r-xr-xr-x alexharvey/wheel for foo/baz?
Run Code Online (Sandbox Code Playgroud)
另请注意,如果您使用的是 Mac OS X 或其他 BSD 变体,则似乎是这种情况,那么您--force通过将其添加到命令行的末尾来错误地指定了该参数,该参数将被解释为要删除的附加文件。
但即使我纠正了这一点,-f 仍然无法覆盖 r--r--r--。相反,您会看到:
? rm -rf foo
rm: foo/baz: Permission denied
rm: foo/bar/qux: Permission denied
rm: foo/bar: Permission denied
rm: foo: Directory not empty
Run Code Online (Sandbox Code Playgroud)
修复:
要解决此问题,请首先恢复文件夹内的写入权限:
? chmod -R +w foo
Run Code Online (Sandbox Code Playgroud)
然后 rm -r 应该可以正常工作:
? rm -r foo
? ls foo
ls: foo: No such file or directory
Run Code Online (Sandbox Code Playgroud)
也可以看看: