使用inode号删除特殊文件及容易忽视的硬链接Links数目问题

 

 

一、使用inode号删除带有特殊符号的文件名

[root@yu63 test]# touch a.txt

[root@yu63 test]# mkdir get_info

[root@yu63 test]# mkdir ???

[root@yu63 test]# ls -il

总用量 8

274341 drwxr-xr-x 2 root root 4096 6月  14 14:02 ???

274338 -rw-r--r-- 1 root root    0 6月  14 14:02 a.txt

274340 drwxr-xr-x 2 root root 4096 6月  14 14:02 get_info

[root@yu63 test]# rm a.txt

rm:是否删除普通空文件 "a.txt"y

[root@yu63 test]# find . -inum 274341 -delete

[root@yu63 test]# ls -il

总用量 4

274340 drwxr-xr-x 2 root root 4096 6月  14 14:02 get_info

 

二、查看文件的inode号有两种方法

第一种:ls -il

第二种:stat 文件名 #或者直接加 *

 

三、为什么每个目录的Links指向的都是2?

1、创建了一个空的文件夹 test

[root@yu63 test]# stat /opt/test/

  File: "/opt/test/"

  Size: 4096      Blocks: 8          IO Block: 4096   目录

Device: 802h/2050dInode: 138924      Links: 2

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-06-14 14:22:32.499993362 +0800

Modify: 2017-06-14 14:22:17.440992753 +0800

Change: 2017-06-14 14:22:17.440992753 +0800

可以看到它的Links显示的2,这里我没有给它做任何的硬链接。这是为什么呢?

 

原因:

[root@yu63 test]# ls -a 查看隐藏文件

.  ..

我们并没有在此文件夹下创建任何文件,但是查看隐藏文件的时候依然可以看到两个文件。这两个文件有点特殊,是用点表示的。

原因是Linux的特性,在Linux中,只要有权限,我们可以随意的切换到任意目录。能够切换的这个动作就是靠这两个隐藏文件进行的。单个(.)表示切换到当前目录。两个(..)表示切换到上一级目录,及父目录。实际上这两个特殊文件就是硬链接文件。链接到本地目录和链接到父级目录。每有一个文件目录,其链接文件就会+1.使得能够进行切换目录。

[root@yu63 test]# cd .

[root@yu63 test]# cd ..

[root@yu63 opt]#

 

2、目录中每增加一个目录文件,硬链接数就加一

[root@yu63 test]# mkdir home

[root@yu63 test]# stat /opt/test

  File: "/root/test"

  Size: 4096      Blocks: 8          IO Block: 4096   目录

Device: 802h/2050dInode: 272997      Links: 3

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-06-14 14:16:20.669993163 +0800

Modify: 2017-06-14 14:16:46.484993356 +0800

Change: 2017-06-14 14:16:46.484993356 +0800

3、目录中增加普通文件,硬链接数不增加

[root@yu63 test]# touch a.txt

[root@yu63 test]# stat /opt/test

  File: "/root/test"

  Size: 4096      Blocks: 8          IO Block: 4096   目录

Device: 802h/2050dInode: 272997      Links: 3

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-06-14 14:16:20.669993163 +0800

Modify: 2017-06-14 14:17:01.989993317 +0800

Change: 2017-06-14 14:17:01.989993317 +0800