一
在说链接之前我们哈需要说明一个东西,就是inode,一个文件的名字可以有多个,但是inode里的i-number却只有一个,(inode是一个数据结构,里面存放文件的各种属性,属主,属组,权限,大小,最后访问的时间)
那怎么查看那i-number呢?直接输入ls -li就可以查看了(第一列)
➜ linux ls -li
total 20
940224 -rw-rw-r-- 2 xujie xujie 23 Nov 25 21:17 a
940219 lrwxrwxrwx 1 xujie xujie 1 Nov 25 21:18 a1 -> a
940224 -rw-rw-r-- 2 xujie xujie 23 Nov 25 21:17 b
这就是在 linux 目录下输入 ls -li 的结果,观察上面的结果我们可以发现 a 和 b 所有的信息除了名字都是一样的,说明 a 和 b 是相同的两个文件。
修改其中的一个就相当于修改了另一个。
使用 ln a b 命令实现,a 代表原始文件,b 代表又给他起了一个新的名字。
这就好比一个文件有多个名字一样。这样的链接叫做硬链接。
而上面的第二行后面显示的是 a1 -> a, 但是我们用 ls 查看一下文件
➜ linux ls
a a1 b
发现只有 a1, 没有a1 -> a,同时也可以看到 a1 的文件类型是 l , l 代表这是一个符号链接文件,可以通过这个链接文件来使用 a,它拥有和 a 的相同的权限。所以符号链接就可以看做一个文件的快捷方式。
它可以通过命令 ln -s a a1来实现。
那么现在链接都建立好了,如果删除的话
➜ linux ls -li
total 20
940224 -rw-rw-r-- 2 xujie xujie 23 Nov 25 21:17 a
940224 -rw-rw-r-- 2 xujie xujie 23 Nov 25 21:17 b
可以看到删除一个符号链接不会对原来的文件产生任何影响。
➜ linux rm a
➜ linux ls -li
total 16
940224 -rw-rw-r-- 1 xujie xujie 23 Nov 25 21:17 b
看到我们删除一个硬链接时,后有一个东西发生了变化,权限后面的数字变为了1,这个叫做链接数,来表示这个文件有多少个链接(有多少个名字)(而且通过第一个结果,字母链接不会增加链接数)
➜ /home ls -li
total 4
932917 drwxr-xr-x 92 xujie xujie 4096 Nov 25 21:41 xujie
看到这个文件的链接数,有这么多,主要原因是当前目录下的 . 和子目录下的 .. 文件都是它的硬链接。
所以删除文件时,只有链接数减为0,文件才会被删除。
这里需要说明的是,有两种情况不可以建立硬连接:
1,不能为目录建立硬链接,以免出现环状目录结构,增加复杂性。(. 和 .. 文件时系统自动创建的。)
2,如果文件在不同的卷,即不同的文件系统(或者是不同的磁盘,windows的说法)建立硬链接。
但是所有的情况都可以使用符号链接。
二
关于文件权限
$ ls -l
- rw-r-- r-- 1 tux system 1081 Jun 13 11:32 file
drwxr-xr-x 2 tux system 512 Jun 13 11:32 man
第一列代表文件类型, d:目录文件, l:符号链接文件, s:套接字文件,b:块设备文件,
c:字符设备文件, p:命名管道文件,-:普通文件。
第一段rwx,表示属主的权限。
第二段r-x,表示属组的权限。
第三段r-x,表示除了不是或不属于上面这些用户的权限(其他用户)。
root拥有超级权限。
这里的 tux 表示属主,system表示属组,后面的数组是文件大小,在后面是最后一次打开时间,最后是文件名字。
需要说明的几点:
1,如果权限表中都没有课执行权限,那么root也没有可执行权限。
2,对于普通文件,有执行权限,肯定有可读权限。
3,对于目录 r 代表可查看当前目录,w 代表可修改这个目录的文件,x 代表可进入这个目录。
4,没有这个文件的权限,但是有所在的目录的权限,可不可以改?可以把它删了,建同名的文件,但是这种做法文件的i-number可能相同,可能不同。
以上。