我是靠谱客的博主 爱撒娇裙子,最近开发中收集的这篇文章主要介绍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

最后

以上就是爱撒娇裙子为你收集整理的linux命令学习教程,Linux ln命令学习的全部内容,希望文章能够帮你解决linux命令学习教程,Linux ln命令学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部