linux命令行学习(6):硬链接与软链接(符号链接)

命令ln创建链接。ln是link之略。
一、什么是链接?
链接相当于windows的快捷方式,指向文件。
对链接操作相当于对文件操作,可以把链接视为文件的一个别名。
ls命令显示文件时,链接和文件都会显示。
链接有两种:硬链接和软链接(又称符号链接)。
硬链接与软链接有区别。
硬链接不能指向目录,只能指向文件;软链接既可以指向文件,也可以指向目录。
二、硬链接
硬链接相当于文件的一个副本,两者完全一样,而且它们之中一个变化了,另一个同步变化。如果一个文件有多个硬链接,也是这样的。
硬链接不存在失效问题。如果我们删除了原文件,硬链接仍然存在,且保持了原文件中的内容。所以也可以把硬链接视为一种备份措施。
硬链接使我们可以在不同的地方共享同一个文件。但要注意,原文件和硬链接必须在同一磁盘分区。我的环境是虚拟机,只有一个分区,所以感觉不到这个问题。
三、软链接
跟硬链接不一样,软链接没有实际内容,它里面只有指向原文件的指针。所以软链接有失效的问题。如果我们删除了原文件,则这个链接就失效了,用ls显示的时候,失效的软链接显示为红色。
用ls -l显示的时候,硬链接的显示与文件一样,但软链接有链接标志(用箭头指向原文件)。
软链接不存在分区的限制。一个文件或目录的软链接可以在不同的分区。软链接也使我们可以在不同的地方访问同一个文件。这是真正的同一个文件,不是像硬链接那样建立了副本,这里有实际内容的文件只有一个。
四、建立链接的ln命令
链接都由ln命令来建立
1 建立硬链接
ln 文件 链接名
2 建立软链接
ln -s 文件 链接名
选项-s表示建立的是软链接。
五、建立链接时的路径问题
可以把链接建立在原文件的同一个目录,也可以建立在不同的目录,因此ln命令中的操作对象都可以加路径。
操作对象是原文件和链接名。
把链接建立在与原文件不同的目录时,对原文件和链接名都既可以使用绝对路径,又可以使用相对路径。
但将软链接建立在与原文件不同的目录,对原文件必须最好使用绝对路径,链接名可以使用相对路径。如果对原文件名使用相对路径,容易出错,导致建立的软链接是无效链接,具体的原因,在《linux命令行学习(9):再谈建立软链接的路径表达》中谈。