Appearance
软链接
创建软链接文件:
bash
ln -s TARGET LINK_NAME
-s, --symbolic
make symbolic links instead of hard linksTARGET:目标文件LINK_NAME:链接文件
关于目标文件链接:
bash
ln -s ./a.out ./day01/k这条指令创建的链接文件 k 实际上指向的是 ./day01/a.out 而非当前目录中的 ./a.out 。(实际上创建软链接时 TARGET 即便不存在,也可以成功创建软链接,所以其实可以把它当作一个字符串。)
bash
lrwxrwxrwx 1 cyan cyan 32 May 25 10:05 g -> /home/cyan/c/a.out
lrwxrwxrwx 1 cyan cyan 7 May 25 09:56 k -> ./a.out
lrwxrwxrwx 1 cyan cyan 8 May 25 10:09 p -> ../a.out所以 TARGET 尽量使用绝对路径。
硬链接
bash
ln TARGET LINK_NAME当硬链接 TARGET 不存在时,就会报错。
创建硬链接后,文件的计数会加1,使用 ls -i 查看 inode 号,如果是同一个 inode 号,则表示为同一文件。
原文件的删除,不会影响到硬链接文件,但计数会减 1。
bash
$ ln a.out b.out # 创建硬链接
$ ll # 链接计数为2
-rwxr-xr-x 2 cyan cyan 16K May 23 17:13 a.out
-rwxr-xr-x 2 cyan cyan 16K May 23 17:13 b.out
$ ls -i # 具有相同 inode 号
27122 a.out 27122 b.out
$ rm a.out # 删除源文件
$ ll # 计数为 1
-rwxr-xr-x 1 cyan cyan 16K May 23 17:13 b.out- 硬链接不要求
TARGET为绝对路径,创建时也会检查文件存在 - 硬链接文件和源文件等价,删除不会影响
- 有相同 inode 号
- 文件类型是 -
- 只有链接文件计数为 0 时才真正删除