如何使用ln命令在Linux/UNIX中创建软链接

时间:2020-01-09 14:16:11  来源:igfitidea点击:

什么是软链接(符号链接)?
如何在UNIX或Linux操作系统下创建软链接(符号链接)?
要在文件之间建立链接,您需要使用ln命令。
符号链接(也称为软链接或符号链接)由一种特殊类型的文件组成,该文件用作对另一个文件或目录的引用。
像操作系统一样的Unix/Linux经常使用符号链接。
本指南说明了如何使用ln命令创建符号/软链接。

可以建立目录以及不同文件系统或不同分区上文件的符号链接。

两种类型的链接

链接有两种类型

  • 符号链接(也称为软链接或符号链接):是指表示另一个文件的抽象位置的符号路径。
  • 硬链接:指物理数据的特定位置。

如何在Unix和Linux下创建软链接/符号链接?

使用ln命令创建软链接。
例如,以下将在当前目录中创建一个名为link1的软链接到名为file1的文件

$ ln -s file1 link1

要验证新的软链接,请运行:

$ ls -l file1 link1

输出示例:

-rw-r--r--  1 veryv  wheel  0 Mar  7 22:01 file1
lrwxr-xr-x  1 veryv  wheel  5 Mar  7 22:01 link1 -> file1

从上面的输出中可以清楚地看到,名为link1的符号链接包含与其链接到的名为file1的文件的名称。

如何使用ln命令

因此,在shell提示符下,在Unix或Linux中创建符号链接的语法如下:

$ ln -s {source-filename} {symbolic-filename}

例如,将/webroot/home/httpd/test.com/index.php创建为/home/Hyman/index.php的软链接,输入以下命令:

$ ln -s /webroot/home/httpd/test.com/index.php /home/Hyman/index.php
$ ls -l

输出示例:

lrwxrwxrwx 1 Hyman  Hyman    16 2007-09-25 22:53 index.php -> /webroot/home/httpd/test.com/index.php

您现在可以编辑名为/home/Hyman/index.php的软链接,并且/webroot/home/httpd/test.com/index.php将得到更新:

$ vi /home/Hyman/index.php

即使使用rm命令删除了软链接/home/Hyman/index.php,您的实际文件/webroot/home/httpd/test.com/index.php仍保留在磁盘上:

$ rm /home/Hyman/index.php ## <--- link gone ##
## But original/actual file remains as it is ##
$ ls -l /webroot/home/httpd/test.com/index.php

创建符号链接到目录

语法保持不变:

$ ln -s {source-dir-name} {symbolic-dir-name}

例如,创建从/home/lighttpd/http/users/Hyman/php/app /目录到要运行的/app /目录的符号链接:

$ ln -s /home/lighttpd/http/users/Hyman/php/app/ /app/

现在,我可以使用/app /编辑文件

$ cd /app/
$ ls -l
$ vi config.php

如何覆盖符号链接/软链接

将-f传递给ln命令以覆盖链接:

ln -f -s /path/to/my-cool-file.txt link.txt

如何删除符号链接/软链接

使用rm命令删除包含符号链接的文件:

rm my-link-name
unlink /app/
rm /home/Hyman/index.php

获得有关ln命令的帮助

执行以下ln命令:

$ man ln
$ ln --help
ln命令选项描述
--backup对每个现有目标文件进行备份
-b类似于--backup,但不接受参数
-d允许超级用户尝试硬链接目录(注意:即使对于超级用户,由于系统限制,它可能也会失败)
-f删除现有目标文件
-i提示是否删除目的地
-L作为符号链接的引用目标
-n将LINK_NAME视为普通文件,如果它是指向目录的符号链接
-P将硬链接直接链接到符号链接
-r创建相对于链接位置的符号链接
-s制作符号链接而不是硬链接
-S覆盖通常的备份后缀
-t指定要在其中创建链接的目录
-T将LINK_NAME始终视为普通文件
-v每个链接文件的打印名称
--help显示此帮助并退出
--version输出版本信息并退出