linux命令__ln
ln
ln是linux中又一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less /usr/local/bin/less -s 是符号链接(symbolic)的意思。
软链接和硬链接
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接
- 以路径的形式存在,类似于Windows操作系统中的快捷方式
- 软链接可以跨越文件系统,硬链接不行
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
硬链接
- 以文件副本的形式存在,但不占用实际空间
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中创建
注意:
1.ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
2.ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
3.ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
4.通过ll可以查看,列表属性第1位是l,尾部会有位置指向的是软连接。
参数
-b或--backup 删除,覆盖目标文件之前的备份。
-d或-F或--directory 建立目录的硬连接。
-f或--force 强行建立文件或目录的连接,不论文件或目录是否存在。
-i或--interactive 覆盖既有文件之前先询问用户。
-n或--no-dereference 把符号连接的目的目录视为一般文件。
-s或--symbolic 对源文件建立软链接(符号连接),而非硬连接。
-S<字尾备份字符串>或--suffix=<字尾备份字符串> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",可通过"-S"参数来改变它。
-v或--verbose 显示指令执行过程。
-V<备份方式>或--version-control=<备份方式> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-S"参数变更,当使用"-V"参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串。
示例
给文件创建软链接
此时的两个文件内容完全一样,现在向a.txt中添加一些内容
[root@honey-master lntest] cat >> a.txt <<EOF
> 哇哈哈哈哈哈哈
> ln软链接
> EOF
[root@honey-master lntest] cat a.txt
ivanlee
717
哇哈哈哈哈哈哈
ln软链接
此时再查看a_s文件
发现文件内容跟着改了,如果对a_s文件进行修改,那么源文件也依然会被修改
将被链接文件删除后,源文件不受影响
[root@honey-master lntest] rm -f a_s.ttx
[root@honey-master lntest] ll
total 4
-rw-r--r--. 1 root root 68 Jun 2 16:45 a.txt
相反的是,如果源文件被删除
链接出会一直闪烁
对于很多可执行文件也一样,比如说python3.6
这么多文件都具有软链接,我们一般启动python的时候,在有添加环境变量的时候,可以直接输入python3进行操作,同时我们也可以根据被链接的命令进行启动
给文件创建硬链接
创建硬链接之后,读取目录完全没有任何的链接显示
分别向两个文件中添加内容
同样也可以互相影响对方。
如果删掉源文件的话
硬链接文件完全不受影响。
给目录添加软链接
目录只能创建软链接。
目录创建链接必须用绝对路径,相对路径创建会不成功,会提示"符号连接的层数过多"这样的错误。
在链接目标目录中修改文件都会在源文件目录中同步变化。
访问lntest2目录和访问lntest目录是一样的,尽管ll命令的输出不一样
如果将原目录删掉,则与文件软链接一样会闪烁
软链接和硬链接的区别
软连接和硬连接可以这样理解:
-
硬连接就像一个文件有多个文件名,
-
软连接就是产生一个新文件(这个文件内容,实际上就是记当要链接原文件路径的信息),这个文件指向另一个文件的位置,
-
硬连接必须在同一文件系统中,而软连接可以跨文件系统
-
硬连接 :源文件名和链接文件名都指向相同的物理地址,目录不能够有硬连接,文件在磁盘中只有一个复制,可以节省硬盘空间,由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除软连接(符号连接)用ln -s命令创建文件的符号连接,符号连接是linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名,类似于硬件方式,可以删除原始文件 而连接文件仍然存在
-
硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Number)。
在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。*******硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
本文来自博客园,作者:ivanlee717,转载请注明原文链接:https://www.cnblogs.com/ivanlee717/p/16338516.html