使用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