link.1

LN(1)

LN(1)

FreeBSD General Commands Manual

LN(1)

ln, link

链接文件

ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file [target_file] ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file ... target_dir link source_file target_file

ln 实用程序为 target_file 指定的文件名创建一个新的目录条目(链接文件)。 target_file 将使用与 source_file 相同的文件模式创建。 在不占用 “copies” 存储空间的情况下,一次在多个位置维护文件的多个副本很有用;相反,链接 “points” 原始副本。 有两种类型的链接;硬链接和符号链接。 链接如何 “points” 文件是硬链接和符号链接之间的区别之一。

选项如下:

-F

如果目标文件已经存在并且是一个目录,则将其删除,以便可能出现链接。 -F 选项应与 -f-i 选项一起使用。 如果既没有指定 -f 也没有指定 -i ,则隐含 -f 除非指定了 -s ,否则 -F 选项是无操作的。

-L

创建指向符号链接的硬链接时,请创建指向符号链接目标的硬链接。 这是默认设置。 此选项取消 -P 选项。

-P

创建指向符号链接的硬链接时,请创建指向符号链接本身的硬链接。 此选项取消 -L 选项。

-f

如果目标文件已经存在,则取消链接,以便可能出现链接。 ( -f 选项覆盖任何以前的 -i-w 选项。)

-h

如果 target_file 或 target_dir 是符号链接,请不要跟随它。 这对于 -f 选项最有用,用于替换可能指向目录的符号链接。

-i

如果目标文件存在,则使 ln 向标准错误写入提示。 如果标准输入的响应以字符 ‘y’ 或 ‘Y’ 开头,则取消链接目标文件,以便可能发生链接。 否则,请勿尝试链接。 ( -i 选项覆盖任何以前的 -f 选项。)

-n

-h 相同,用于与其他 ln 实现兼容。

-s

创建符号链接。

-v

使 ln 变得冗长,在处理文件时显示文件。

-w

如果符号链接的源当前不存在,则发出警告。

默认情况下, ln 创建 hard 链接。 文件的硬链接与原始目录条目无法区分;对文件的任何更改实际上都独立于用于引用文件的名称。 目录可能不是硬链接的,硬链接可能不跨越文件系统。

符号链接包含它所链接的文件的名称。 当对链接执行 open(2) 操作时,将使用引用的文件。 符号链接上的 stat(2) 将返回链接到的文件;必须执行 lstat(2) 以获取有关链接的信息。 readlink(2) 调用可用于读取符号链接的内容。 符号链接可以跨越文件系统并且可以引用目录。

给定一个或两个参数, ln 创建一个指向现有文件 source_file 的链接。 如果给出了 target_file ,则链接具有该名称; target_file 也可以是放置链接的目录;否则放在当前目录下。 如果仅指定目录,则链接将指向 source_file 的最后一个组件。

给定两个以上的参数, ln 在 target_dir 中创建指向所有命名源文件的链接。 建立的链接将与被链接到的文件具有相同的名称。

当实用程序作为 link 调用时,必须提供恰好两个参数,这两个参数都不能指定目录。 在这种简单的操作模式中不能提供任何选项,它使用两个传递的参数执行 link(2) 操作。

创建一个名为 /home/src 的符号链接并将其指向 /usr/src:

# ln -s /usr/src /home/src

硬链接 /usr/local/bin/fooprog 到文件 /usr/local/bin/fooprog-1.0:

# ln /usr/local/bin/fooprog-1.0 /usr/local/bin/fooprog

作为练习,请尝试以下命令:

# ls -i /bin/[ 11553 /bin/[ # ls -i /bin/test 11553 /bin/test

请注意,这两个文件具有相同的 inode;也就是说, /bin/[ 本质上是 test(1) 命令的别名。 该硬链接存在,因此可以从 shell 脚本调用 test(1) ,例如,使用 if [ ] 构造。

在下一个示例中,对 ln 的第二次调用删除了原始 foo 并创建了一个指向 baz 的替换:

# mkdir bar baz # ln -s bar foo # ln -shf baz foo

如果没有 -h 选项,这将使 foo 指向 bar 并在 foo 内部创建一个指向自身的新符号链接 baz 。 这是目录遍历的结果。

一个容易记住的规则是 ln 的参数顺序与 cp(1) 的相同:第一个参数需要存在,第二个参数需要创建。

-h, -i, -n, -v-w 选项是非标准的,不建议在脚本中使用它们。 提供它们仅仅是为了与其他 ln 实现兼容。

-F 选项是 FreeBSD 扩展,不应在可移植脚本中使用。

link(2), lstat(2), readlink(2), stat(2), symlink(2), symlink(7)

ln 实用程序符合 IEEE Std 1003.2-1992 (“POSIX.2”) 。

简化的 link 命令符合 Version 2 of the Single UNIX Specification (“SUSv2”) 。

ln 命令出现在 Version 1 AT&T UNIX 。

June 12, 2017

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区