ln命令
这是linux中一个非常重要命令。它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
这个命令最常用的参数是-s,具体用法是:
sudo ln -s 源文件 目标文件
-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
举例:
当前目录是/local,而我经常要访问/usr/local/linux/work
那么我就可以使用在local下建立一个文件linkwork,
然后sudo ln -s /usr/local/linux/work /local/linkwork
即建立两者之间的链接。
删除链接
链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。
在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果[链接名]是一个目录名,系统将在该目录之下建立一个或多个与“目标”同名的链接文件, 链接文件和被链接文件的内容完全相同。如果[链接名]为一个文件,用户将被告知该文件已存在且不进行链接。如果指定了多个“目标”参数,那么最后一个参数 必须为目录。
如果给ln命令加上- s选项,创建软连接(符号链接)。如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。
root@luo-X550WE:/oldboy# touch app3.0 root@luo-X550WE:/oldboy# ln -s .app3.0 app root@luo-X550WE:/oldboy# touch app3.7 root@luo-X550WE:/oldboy# mv app3.0 /tmp/ root@luo-X550WE:/oldboy# rm -f app root@luo-X550WE:/oldboy# ln -s app3.7 app root@luo-X550WE:/oldboy# ls -hi app3.7 app 2945 app 2947 app3.7 root@luo-X550WE:/oldboy# ls -li app3.7 app 2945 lrwxrwxrwx 1 root root 6 1月 24 20:15 app -> app3.7
重要作用:将app3.0与app软连接,哪天app3.0升级成3.7 只需rm app 重新与升级版进行软连接即可。
如果升级版有问题马上可以重新链接旧版本的app
软连接和源文件是不同类型的文件,也是不同的文件,inode号也不同
总结:
root@luo-X550WE:/oldboy# ln 1.txt hard_link root@luo-X550WE:/oldboy# ln -s 1.txt soft_link root@luo-X550WE:/oldboy# ls -li 1.txt hard_link soft_link 25 -rw-r--r-- 2 root root 97 1月 17 13:34 1.txt 25 -rw-r--r-- 2 root root 97 1月 17 13:34 hard_link 2946 lrwxrwxrwx 1 root root 5 1月 24 20:27 soft_link -> 1.txt
1 删除软连接,硬链接文件对源文件都没有影响
2 删除源文件,对硬链接无影响,软链接
3 同时删除硬,源文件,文件删除再也找不回了.
3 目录可以创建硬链接,但是不能创建软连接