我们按几下命令操作顺序新建4个文件:
touch a:新建一个空文件a
ln a ha: 建立a的一个硬链接文件ha
ln -s a sa:建立a的一个符号链接文件sa
ln -s sa ssa:建立sa的一个符号链接文件ssa
ll -i后显示如下:
9389954 -rw-rw-r-- 2 wqm wqm 0 04-09 20:28 a
9389954 -rw-rw-r-- 2 wqm wqm 0 04-09 20:28 ha
9389973 lrwxrwxrwx 1 wqm wqm 1 04-09 20:29 sa -> a
9389974 lrwxrwxrwx 1 wqm wqm 2 04-09 20:29 ssa -> sa
从上图可以得知以下信息:
a,ha的i-节点号相同,为9389954,表明是同一个文件,文件大小也相同,都是0.
sa,ssa,a的i-结点编号都不同,表明他们是不同的文件。它们都过文件名建立联系。sa的文件大小就是文件a的文件名的长度,为1.ssa的情况类似。
修改a文件,ha也随之变化。sa本身不变,只是它们指向的文件发生了变化。
删除文件a,只是将链接数减1,并未实际上删除此文件。ha不发生变化。而删除a后,sa与ssa的文件名在终端中会闪烁显示,表明它们所指向的文件不见 了,此时cat ha命令会正常显示ha的内容。而cat sa或cat ssa则显示:没有那个文件和目录。而实际上,文件a的克隆体ha还是存在的,但是硬链接却发现不了这一点,直接说找不到文件。可见硬链接的智商程度还是 较低的,它只认文件名而已。
用实例区分Linux下硬链接和符号链接
最新推荐文章于 2025-04-16 08:49:40 发布