Open FrankKai opened 4 years ago
UNIX中的link,指的是一个文件的指针。就像任何语言类型中的指针一样,UNIX中的link指的是指向文件或者目录的指针。创建link类似于为一个文件赋予权限的快捷方式。Link允许在其他地方为同一个文件创建多个文件名。 有两种类型的link:
这些link的主要区别在于:link源移动或者移除时的行为表现不同。Symbolic links不会更新。(他们几乎都不包含目标路径的一个字符串);hard links总是引用源,即使移动或者删除掉源。
思考:Symbolic link只是一个快捷方式,而且在源变化时不会更新的那种;而Hard link则就是一个包含了源文件的一个链接,是一个拷贝。
例如,如果我们有一个文件 a.txt。如果我们为这个文件创建了一个hard link,紧接着删除了这个文件,我们仍然可以通过hard link访问到文件。但是如果我们创建一个soft link并且删除文件,我们不能通过soft link访问到这个文件,此时的soft link是悬空的(【计】dangling ,dangling pointer悬空指针)。基本上hard link会增加一个位置的引用数,而soft link仅仅是一个快捷方式(比如Windows中的快捷方式)。
ln [original filename] [link name]
lrwxr-xr-x 1 frank staff 19B 9 4 14:20 softlink.js -> filename-dirname.js
ln -s [original name] [link name]
原始文件 link.js
创建一个hard link
ln link.js hardlink.js
修改hardlink.js,link.js也会被修改;修改link.js,hardlink.js也会被修改。
删除link.js,hardlink.js有效。
创建一个soft link
ln -s link.js softlink.js
打开softlink.js,实际打开的是link.js。
删除link.js,softlink.js失效。