linux命令学习教程,Linux ln命令学习

ln命令用来给档案创建链接。

1. 使用ln命令给档案创建symbolic link。

linux系统下的symbolic link类似于windows系统的快捷方式一样。

使用ls命令查看,可以看到新创建的symbolic link有独立的inode,也就是symbolic link会占用一个inode,但是其实际内容仍然是指向

源文件所指向的block区域。

# touch /tmp/file

# ls -lhi /tmp/file

3441 -rw-r--r--    1 root    root            0 Jan  1 00:09 /tmp/file

#

# ln -fs /tmp/file /tmp/symbolic_link

# ls -lhi /tmp/symbolic_link

3647 lrwxrwxrwx    1 root    root            9 Jan  1 00:10 /tmp/symbolic_link -> /tmp/file

#

2. 删除symbolic link文件,实际上就是删除这个inode,而不会影响到源文件所指向的block区域;

而如果删除了源文件,那这个symbolic link文件就基本上没用了。

# echo "link test" > /tmp/file

# cat /tmp/file

link test

#

# rm /tmp/symbolic_link

# cat /tmp/file

link test

#

# ln -fs /tmp/file /tmp/symbolic_link

#

# rm /tmp/file

# cat /tmp/symbolic_link

cat: can't open '/tmp/symbolic_link': No such file or directory

#

# ls -lhi /tmp/symbolic_link

7357 lrwxrwxrwx    1 root    root            9 Jan  1 00:22 /tmp/symbolic_link -> /tmp/file

#

3. 使用ln命令创建hard link。

可以看到,创建hard link是使用同一个inode,而copy了一份源文件的block区域出来。

如果修改档案的内容,源文件和hard link文件对应的block区域内容都会被修改,从而保持一致性。

# touch /tmp/file

# echo "hard link test" > /tmp/file

# cat /tmp/file

hard link test

# ln /tmp/file /tmp/hard_link

# ls -lhi /tmp/file

7996 -rw-r--r--    2 root    root          15 Jan  1 00:25 /tmp/file

# ls -lhi /tmp/hard_link

7996 -rw-r--r--    2 root    root          15 Jan  1 00:25 /tmp/hard_link

# cat /tmp/hard_link

hard link test

#

# echo "hard link test 2" > /tmp/file

# cat /tmp/file

hard link test 2

# cat /tmp/hard_link

hard link test 2

#

# echo "hard link test 3" > /tmp/hard_link

# cat /tmp/file

hard link test 3

# cat /tmp/hard_link

hard link test 3

#

4. 删除hard link或者删除源文件,实际上只是删除其中其中一份block区域。

可以看到,虽然源文件被删除(实际上只是删除了源文件对应的block区),但是

inode仍然还在,所以仍然可以透过hard link档案来访问源文件的内容。

到了这里,就可以理解为什么inode信息中不包含文件名了;

因为如果文件名信息包含在inode中,并且创建了hard link,此时为何还需要两块不同的block区域

来储存文件信息呢?进而hard link还有什么意义呢?

# rm /tmp/file

# cat /tmp/file

cat: can't open '/tmp/file': No such file or directory

#

# cat /tmp/hard_link

hard link test 3

#

# ls -hli /tmp/hard_link

7996 -rw-r--r--    1 root    root          17 Jan  1 00:29 /tmp/hard_link

#

5. 为目录创建symbolic link?

因为新建的symbolic link目录与源目录是同一个inode,所以对这两个目录的访问具有完全相同的表现。

# mkdir /tmp/directory

# ln -fs /tmp/directory/ /tmp/dir_sym_link

#

# ls -hdi /tmp/directory/

14018 /tmp/directory/

# ls -hdi /tmp/dir_sym_link/

14018 /tmp/dir_sym_link/

#

# touch /tmp/directory/file

# ls -hil /tmp/directory/file

14781 -rw-r--r--    1 root    root            0 Jan  1 00:47 /tmp/directory/file

# ls -hil /tmp/dir_sym_link/file

14781 -rw-r--r--    1 root    root            0 Jan  1 00:47 /tmp/dir_sym_link/file

#

# echo "directory symbolic test" > /tmp/dir_sym_link/file

# cat /tmp/dir_sym_link/file

directory symbolic test

# cat /tmp/directory/file

directory symbolic test

#

6. 为目录创建hard link?

从结果看,为目录创建hard link失败了。

# ln /tmp/directory/ /tmp/dir_hard_link

ln: /tmp/dir_hard_link: Operation not permitted

待确认问题:

1. 文件名信息既然不是存储在inode中,那是存储在哪的呢?

2. 为目录创建symbolic link,竟然和源目录文件是同一个inode,目录有什么特殊性?

推荐阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值