快捷方式 ln
.. _linux_ln_beginner:
.. note::
蓬生麻中,不扶而直。
《荀子·劝学》
ln 命令是一个非常重要的命令,可以为某一个文件或目录在其他不同的位置建立一个同步的链接。部分功能与Windows的快捷方式类似。但更加强大。
官方解释为:
ln - make links between files
当我们需要在不同的目录,或者不同的工程,甚至是不同的人员需要用到同一个文件的时候,此时不需要每个位置都通过cp来拷贝一份,因为在源文件更新的时候,这个文件是不会同步更新的 。而此时ln命令就不一样了,通过该命令链接到源文件或目录,不仅可以不用占用重复的更多的磁盘空间,还可以同步更新。NICE。
命令格式
1 | $ ln [参数][源文件或目录][目标文件或目录] |
其中参数的格式为
- -b ,或 like –backup but does not accept an argument
-f,或--force: 强制执行,这个在链接已经存在的情况下必用-s,或--symbolic:创建符号链接
在Linux文件系统中,又有两种链接类型:
- 硬链接(hard link)
- 软链接(symbolic link):又称符号链接,类似于Windows的快捷方式
硬链接会复制一份相同大小的源文件,而软链接是一种特殊的文件,占用很小的磁盘空间。
创建硬链接
默认情况下,不加任何参数,创建的是硬链接,如下,创建源文件a.log的硬链接a1.log:
1 | $ ln a.log a1.log |
这个时候修改源文件a.log的部分内容,可以看到硬链接也同步更新。
1 | $ vim a.log |
创建软链接
如果需要创建软链接,就需要参数-s,如下,创建源文件a.log的软链接a1.log:
1 | $ ln -s a.log a1.log |
这个时候修改源文件a.log的部分内容,可以看到软链接没有更新,不过其指向的内容依然更新了。
1 | $ vim a.log |
此时可以看到,对于软链接a1.log而言,其仅为一个符号链接,用file看一下:
1 | $ file a1.log |
删除源文件后的情况
此时通过ln创建a.log的硬链接ah.log和软链接as.log,然后看一下如果删除源文件会发生什么情况。
1 | # 创建软硬链接 |
可以看到如果删除了源文件,硬链接不受影响,但是软链接已经提示链接损坏了。
强制更新软链接
在软链接存在的情况下,如果再创建一个同名的,会报错,此时就需要强制创建了,加上-f参数即可。
1 | $ ln -s b.log as.log |