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命令:权限后面的数字表示硬链次数
[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、注意
目录只能创建软链接
目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多 这样的错误
在链接目标目录中修改文件都会在源文件目录中同步变化
–
–
–
评论前必须登录!
注册