Linux ln -s 软链接

本文详细介绍了Linux中的ln命令,包括如何创建硬链接和软链接,以及它们之间的区别。通过具体的例子展示了ln命令的使用方法,并解释了硬链接和软链接的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,
具体用法是:ln -s 源文件 目标文件。
当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln -s /bin/less /usr/local/bin/less
-s 是代号(symbolic)的意思。
这 里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接 和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。


不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
  -f : 链结时先将与 dist 同档名的档案删除
  -d : 允许系统管理者硬链结自己的目录
  -i : 在删除与 dist 同档名的档案时先进行询问
  -n : 在进行软连结时,将 dist 视为一般的档案
  -s : 进行软链结(symbolic link)
  -v : 在连结之前显示其档名
  -b : 将在链结时会被覆写或删除的档案进行备份
  -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
  -V METHOD : 指定备份的方式
  --help : 显示辅助说明
  --version : 显示版本

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

 

2.通过实验加深理解
[oracle@Linux]$ vi test.log                         #创建一个测试文件f1
[oracle@Linux]$ ln test.log test1.log           #创建f1的一个硬连接文件test1.log
[oracle@Linux]$ ln -s test.log test2.log       #创建f1的一个符号连接文件test2.log
[oracle@Linux]$ ls -li                                 # -i参数显示文件的inode节点信息

两种链接的区别:  

     硬链接文件有两个限制
   1)、不允许给目录创建硬链接;
   2)、只有在同一文件系统中的文件之间才能创建链接,而且只有超级用户才有建立硬链接权限。
       对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。

          这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。

         那么我们就可以这样理解:硬连接指通过索引节点来进行的连接,其作用是允许一个文件拥有多个有效路径名,能够达到误删除的作用。

      其原因是因为对应的文件的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它

      的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。文件才会被真正删除。

         注:保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index即I节点)。          

     软链接没有硬链接以上的两个限制,因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。但是软链接的缺点在于:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

### 使用 `ln -s` 命令创建软链接Linux 系统中,`ln -s` 命令用于创建软链接(符号链接)。软链接类似于 Windows 中的快捷方式,它指向另一个文件或目录。软链接可以跨越文件系统,并且即使目标文件被删除,软链接仍然存在,但会变成无效链接。 #### 基本语法 ```bash ln -s [目标文件或目录] [软链接文件] ``` - **目标文件或目录**:这是你想要创建链接的实际文件或目录。 - **软链接文件**:这是你创建的指向目标文件或目录的软链接。 #### 示例 1. **创建一个指向文件的软链接** 假设你有一个文件 `/home/user/documents/report.txt`,你想创建一个名为 `report_link` 的软链接,指向这个文件。 ```bash ln -s /home/user/documents/report.txt /home/user/report_link ``` 现在,`report_link` 就是一个指向 `report.txt` 的软链接。你可以使用 `cat report_link` 来查看文件内容。 2. **创建一个指向目录的软链接** 假设你有一个目录 `/home/user/projects/my_project`,你想创建一个名为 `project_link` 的软链接,指向这个目录。 ```bash ln -s /home/user/projects/my_project /home/user/project_link ``` 现在,`project_link` 就是一个指向 `my_project` 目录的软链接。你可以使用 `ls -l project_link` 来查看链接指向的目录内容。 3. **查看软链接的信息** 使用 `ls -l` 命令可以查看软链接的信息。软链接的权限字段中会显示 `l`,并且会显示它指向的目标文件或目录。 ```bash ls -l report_link ``` 输出可能类似于: ``` lrwxrwxrwx 1 user user 25 Oct 1 12:34 report_link -> /home/user/documents/report.txt ``` 这表明 `report_link` 是一个软链接,指向 `/home/user/documents/report.txt`。 4. **删除软链接** 如果你不再需要软链接,可以使用 `rm` 命令删除它。请注意,删除软链接不会影响目标文件或目录。 ```bash rm report_link ``` 5. **覆盖已有的软链接** 如果你尝试创建一个已经存在的软链接,`ln -s` 会提示错误。为了避免这种情况,可以在创建软链接使用 `-f` 选项来强制删除已有的软链接。 ```bash ln -sf /home/user/documents/new_report.txt /home/user/report_link ``` 这将删除原有的 `report_link`,并创建一个新的指向 `new_report.txt` 的软链接。 6. **处理路径问题** 在创建软链接时,路径可以是绝对路径或相对路径。如果你希望软链接在不同的环境中仍然有效,建议使用相对路径。 例如,假设你有一个文件 `~/documents/report.txt`,你想在当前目录下创建一个软链接 `report_link` 指向它。 ```bash ln -s ../documents/report.txt report_link ``` 这样,无论你将整个目录移动到哪里,只要目录结构保持不变,软链接仍然有效。 #### 注意事项 - **权限问题**:确保你有权限访问目标文件或目录,并且有权限在目标位置创建软链接- **跨文件系统**:软链接可以跨越不同的文件系统,但硬链接不能。 - **删除目标文件**:如果目标文件被删除,软链接将变成“悬空链接”(dangling link),即指向不存在的文件或目录。 通过这些示例和注意事项,你可以更好地理解和使用 `ln -s` 命令来创建软链接[^1]。 ```bash # 示例:创建一个指向文件的软链接 ln -s /path/to/target/file /path/to/symlink # 示例:创建一个指向目录的软链接 ln -s /path/to/target/directory /path/to/symlink # 示例:查看软链接信息 ls -l /path/to/symlink # 示例:删除软链接 rm /path/to/symlink # 示例:覆盖已有的软链接 ln -sf /path/to/new/target /path/to/symlink ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值