路漫漫其修远兮
吾将上下而求索

linux链接文件:ln命令

        ln是linux重要的命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

1.命令格式:

ln [OPTION]... [-T] TARGET LINK_NAME

2.命令功能:

        Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统

软链接:

1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:

1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

3.命令参数:

-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

4、软链的创建和删除

当删除目录的软链时,后面有斜线,表明删除目录里面的内容,而不是删除此软链本身,如果想要删除软链本身,不能加斜线,坑

[root@localhost /usr]#ll
drwxr-xr-x.   4 root root  4096 Jul 21  2016 src

[root@localhost /usr]#ln -sv src src_link    #给目录创建软链,打开的目录内容是相同的
`src_link' -> `src'
[root@localhost /usr]#ll
drwxr-xr-x.   4 root root  4096 Jul 21  2016 src
lrwxrwxrwx    1 root root     3 Jun  4 13:17 src_link -> src

[root@localhost /usr]#cd src_link/
[root@localhost /usr/src_link]#ls
debug  kernels
[root@localhost /usr/src_link]#cd ..
[root@localhost /usr]#cd src
[root@localhost /usr/src]#ls
debug  kernels

[root@localhost /usr/src]#cd ..
[root@localhost /usr]#echo hello > abc
[root@localhost /usr]#ll
-rw-r--r--    1 root root     6 Jun  4 13:18 abc

[root@localhost /usr]#ln -sv abc abc_link    #给文件创建软链,打开的文件内容是相同的
`abc_link' -> `abc'
[root@localhost /usr]#ll
-rw-r--r--    1 root root     6 Jun  4 13:18 abc
lrwxrwxrwx    1 root root     3 Jun  4 13:18 abc_link -> abc

[root@localhost /usr]#cat abc_link 
hello




[root@localhost /usr]#rm abc_link     #要想删除软链,直接删除即可
rm: remove symbolic link `abc_link'? y
[root@localhost /usr]#ls
abc  

[root@localhost /usr]#ll
drwxr-xr-x.   4 root root  4096 Jul 21  2016 src
lrwxrwxrwx    1 root root     3 Jun  4 13:17 src_link -> src
[root@localhost /usr]#rm -rf src_link/    #当删除目录的软链时,后面有斜线,表明删除目录里面的内容,而不是删除此软链本身,如果想要删除软链本身,不能加斜线,坑
[root@localhost /usr]#ll
drwxr-xr-x.   2 root root  4096 Jun  4 13:19 src
lrwxrwxrwx    1 root root     3 Jun  4 13:17 src_link -> src

[root@localhost /usr]#cd src
[root@localhost /usr/src]#ls    #里面的内容空了

[root@localhost /usr/src]#cd ..
[root@localhost /usr]#ls
src  src_link
[root@localhost /usr]#rm -rf src_link
[root@localhost /usr]#ls
src

5、硬链的创建和删除

一个文件由元数据和数据组成,一般情况下一个元数据对应一个数据。创建硬链后相当于两个元数据指向同一个数据,这两个元数据可以是不同名字,但是大小这些属性是相同的,所以打开的文件内容相同。一般情况下,删除一个文件,元数据和数据同时被删除,当文件有硬链的时候,两个元数据指向同一个数据,这时删除一个文件,只是将其一个元数据删除,此文件还可以通过另外的硬链访问,只有将另外的硬链也删除,这时文件才被完全删除。之后即使创建和之前删除的文件名相同的文件,也是两个不同的文件了。

因为两个元数据指向同一个数据区,可通过任意文件名来修改里面的内容,通过另外文件名访问也是修改后的文件。

ll命令:权限后面的数字表示硬链次数

image.png

[root@localhost /usr]#ll
-rw-r--r--    1 root root     6 Jun  4 13:18 abc

[root@localhost /usr]#ln abc abc_link
[root@localhost /usr]#ll
-rw-r--r--    2 root root     6 Jun  4 13:18 abc
-rw-r--r--    2 root root     6 Jun  4 13:18 abc_link

[root@localhost /usr]#cat abc
hello
[root@localhost /usr]#cat abc_link 
hello

[root@localhost /usr]#rm -rf abc
[root@localhost /usr]#ll
-rw-r--r--    1 root root     6 Jun  4 13:18 abc_link

[root@localhost /usr]#cat abc_link 
hello
[root@localhost /usr]#echo hi > abc
[root@localhost /usr]#ll
-rw-r--r--    1 root root     3 Jun  4 13:38 abc
-rw-r--r--    1 root root     6 Jun  4 13:18 abc_link

[root@localhost /usr]#cat abc
hi
[root@localhost /usr]#cat abc_link 
hello

6、注意

目录只能创建软链接

目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多 这样的错误

在链接目标目录中修改文件都会在源文件目录中同步变化

未经允许不得转载:江哥架构师笔记 » linux链接文件:ln命令

分享到:更多 ()

评论 抢沙发

评论前必须登录!