ln 创建文件链接

ln 用于为文件和目录创建一个链接,在 Linux 中有两种链接的概念: 硬链接和软链接

命令格式:

ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...

常用选项:

-f, --force
    强行建立文件或目录的连接,不论文件或目录是否存在

-i, --interactive
    在覆盖既有文件之前先询问

-n, --no-dereference
    把符号链接视为一般目录(链接到符号链接时必须)

-s, --symbolic
    建立软链接,而非默认的硬连接

使用实例:

# 在当前目录,创建一个硬链接:
[Linux]$ ln 1.txt 0.txt
[Linux]$ ls -li
total 0
12189699 -rw-rw-r-- 2 glenn glenn 0 Dec  6 08:54 0.txt
12189699 -rw-rw-r-- 2 glenn glenn 0 Dec  6 08:54 1.txt

# 在指定目录,创建一个同名的硬链接:
[Linux]$ ln 1.txt /media/
[Linux]$ ls -li /media
total 0
12189699 -rw-rw-r-- 3 glenn glenn 0 Dec  6 08:54 1.txt

# 在当前目录,创建一个软链接:
[Linux]$ ln -s 1.txt z.txt
[Linux]$ ls -li
total 0
12189699 -rw-rw-r-- 3 glenn glenn 0 Dec  6 08:54 0.txt
12189699 -rw-rw-r-- 3 glenn glenn 0 Dec  6 08:54 1.txt
12189708 lrwxrwxrwx 1 glenn glenn 5 Dec  6 09:04 z.txt -> 1.txt

# 更新软连接
[Linux]$ ln -sf 0.txt z.txt
[Linux]$ ls -l
total 0
12189699 -rw-rw-r-- 3 glenn glenn 0 Dec  6 08:54 0.txt
12189699 -rw-rw-r-- 3 glenn glenn 0 Dec  6 08:54 1.txt
12189708 lrwxrwxrwx 1 glenn glenn 5 Dec  6 09:04 z.txt -> 0.txt

提示

删除目录软链接

[Linux]$ ln -s doc c
[Linux]$ ls -l
lrwxrwxrwx  1 glenn glenn    4 Dec  6 10:04 c -> doc/
drwxrwxr-x  2 glenn glenn 4096 Dec  6 09:07 doc/

# 错误的删除方式
# 软链接并没有删除,删除的是 doc 目录下的所有文件
[Linux]$ rm -rf c/
[Linux]$ ls -l
lrwxrwxrwx 1 glenn glenn    3 Dec  6 10:05 c -> doc
drwxrwxr-x 2 glenn glenn 4096 Dec  6 10:06 doc
Linux]$ ls -l doc/
total 0

# 正确的删除方式
# 删除软链接时,不能加 / 符号
[Linux]$ rm -rf c
[Linux]$ ls -l
drwxrwxr-x 2 glenn glenn 4096 Dec  6 10:06 doc