是否可以删除.和 ..?

是否可以删除.和 ..?

.和可以删除吗..

我在某处读到有一些针对 Linux 内核的补丁可以让你做到这一点。我不知道在哪里读到它,也不知道如何搜索它,因为 google 和 duckduckgo 忽略了 s .

答案1

从技术上来说,这是可能的;例如,在 ext4 文件系统上e2test.img

$ sudo mount e2test.img /mnt/temp
$ sudo mkdir /mnt/temp/dir{1,2}
$ sudo umount /mnt/temp
$ debugfs -w e2test.img
debugfs 1.45.6 (20-Mar-2020)
debugfs:  unlink dir1/..
debugfs:  unlink dir1/.
debugfs:  quit
$ sudo mount e2test.img /mnt/temp
$ ls -a /mnt/temp/dir{1,2}
/mnt/temp/dir1:

/mnt/temp/dir2:
.  ..

shell 并不是特别混乱:

$ cd /mnt/temp/dir1
$ pwd
/mnt/temp/dir1
$ cd ..
$ pwd
/mnt/temp

正如所料,e2fsck对此并不满意:

$ e2fsck e2test.img
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Missing '.' in directory inode 113793.
Fix<y>? yes
Setting filetype for entry '.' in ... (113793) to 2.
Missing '..' in directory inode 113793.
Fix<y>? yes
Setting filetype for entry '..' in ... (113793) to 2.
Pass 3: Checking directory connectivity
'..' in /dir1 (113793) is <The NULL inode> (0), should be / (2).
Fix<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information

e2test.img: ***** FILE SYSTEM WAS MODIFIED *****
e2test.img: 14/128016 files (0.0% non-contiguous), 18478/512000 blocks

确切的行为取决于所使用的特定文件系统。有些甚至不存储...条目,而是模拟它们(POSIX 需要...被理解并解析到适当的目录,但不要求它们实际存在)。

相关内容