![为什么“rm -rf ./”不删除任何内容?](https://linux22.com/image/5943/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9Crm%20-rf%20.%2F%E2%80%9D%E4%B8%8D%E5%88%A0%E9%99%A4%E4%BB%BB%E4%BD%95%E5%86%85%E5%AE%B9%EF%BC%9F.png)
该命令rm -rf ./
不会在充满子目录和文件的目录中执行任何操作。为什么这样?不-r
应该递归吗?
为了增加更多的混乱,它甚至打印一条错误消息,表明它正在遍历目录:
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘./’
答案1
该rm
命令拒绝删除“.”目录姓名。如果您使用完整路径名,它应该递归删除目录,即rm -rf `pwd`
.
如果该目录是当前目录,也可以删除该目录。
[testuser@testhost] /tmp$ mkdir ff
[testuser@testhost] /tmp$ cd ff
[testuser@testhost] /tmp/ff$ touch a b c
[testuser@testhost] /tmp/ff$ rm -rf ./
rm: cannot remove directory: ‘./’
[testuser@testhost] /tmp/ff$ ls
a b c
[testuser@testhost] /tmp/ff$ rm -rf /tmp/ff
[testuser@testhost] /tmp/ff$ ls
[testuser@testhost] /tmp/ff$ ls ../ff
ls: cannot access ../ff: No such file or directory
[testuser@testhost] /tmp/ff$ cd ..
[testuser@testhost] /tmp$ ls ff
ls: cannot access ff: No such file or directory
从info rm
:
任何删除最后一个文件名部分为.' or
..' 的文件的尝试都会被拒绝,且不会出现任何提示。
答案2
您无法删除当前目录,因为这样当前目录将变得无效。
首先,更改要删除的目录(例如cd ..
),然后使用其完整或相对路径名删除所需的目录从外面。