/usr/bin/ln [-fns] source_file [target]
/usr/bin/ln [-fns] source_file... target
/usr/xpg4/bin/ln [-fs] source_file [target]
/usr/xpg4/bin/ln [-fs] source_file... target
在第一个概要形式中,ln 实用程序为 source_file 指定的文件在 target 指定的目标路径位置创建新的目录条目(链接)。如果未指定 target,则将在当前目录中设置链接。当最终操作数不指定现有目录时,将假定使用第一个概要形式;如果指定的操作数超过两个且最后一个不是现有目录,则会导致错误。
在第二个概要形式中,ln 实用程序将为 source_file 操作数指定的每个文件在由 target 指定的现有目录中的目标路径位置创建新的目录条目。
ln 实用程序可用于创建硬链接和符号链接。硬链接是文件的指针,与原始目录条目无法区分。对文件所做的任何更改都是有效的,并不依赖用于引用文件的名称。硬链接不能跨文件系统而且不能引用目录。
缺省情况下,ln 将创建硬链接。source_file 将链接到 target。如果 target 是一个目录,则会在 target 中创建另一个名为 source_file 的文件,并链接到原始 source_file。
如果 target 是现有文件且未指定 –f 选项,则 ln 会将诊断消息写入标准错误,不对当前 source_file 执行任何其他操作,然后继续转到其余的 source_file。
符号链接是文件的间接指针,其目录条目包含所链接到的文件名称。符号链接可以跨文件系统而且可以引用目录。
target 的文件权限与显示为 –l 的 ls(1) 命令列表的权限有所不同。要显示 target 的权限,请使用 ls –lL。有关详细信息,请参见 stat(2)。
如果 /usr/bin/ln 确定 target 的模式禁止写入,则会列出该模式(请参见 chmod(1)),并请求响应,然后读取一行的标准输入。如果响应是肯定性的,并且权限允许,则链接生效。否则,命令将退出。
当创建硬链接且源文件本身为符号链接时,目标将是一个硬链接,链接到由符号链接所引用的文件,而不是链接到符号链接对象本身(source_file)。
/usr/bin/ln 和 /usr/xpg4/bin/ln 支持以下选项:
不询问用户的链接文件,即使在 target 禁止写入模式中也同样如此。如果标准输入不是终端,则此为缺省选项。
创建符号链接。
如果 –s 选项与两个参数结合使用,则 target 可能为现有目录或不存在的文件。如果 target 已经存在并且不是目录,则会返回错误。source_file 可能是任何路径名,并不需要存在。如果存在,可能是文件或目录,并且可能驻留在与 target 不同的文件系统中。如果 target 是现有目录,则会在名为 source_file 或名称为 source_file 最后组成部分的目录 target 中创建文件。此文件是引用 source_file 的符号链接。如果 target 不存在,则将创建名为 target 的文件,该文件是引用 source_file 的符号链接。
如果 –s 选项与超过两个参数一起使用,则 target 必须是现有目录,否则会返回错误。对于每个 source_file,将在名称为 source_file 最后组成部分的 target 中创建链接。每个新 source_file 都是原始 source_file 的符号链接。文件和 target 可能驻留在不同的文件系统中。
/usr/bin/ln 仅支持以下选项:
如果 target 是现有文件,则将诊断消息写入标准错误中,然后继续转到其余的 source_file。–f 选项可覆盖此选项。此为 /usr/bin/ln 和 /usr/xpg4/bin/ln 的缺省行为,并在无提示的情况下被忽略。
支持下列操作数:
要链接的文件的路径名。可以是常规文件或特殊文件。如果指定了 –s 选项,则 source_file 也可以是目录。
要创建的新目录条目的路径名,或者要在其中创建新目录条目的现有目录的路径名。
有关 ln 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)。
有关影响 ln 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH。
将返回以下退出值:
所有指定的文件均已成功链接。
出现错误。
有关下列属性的说明,请参见 attributes(5):
|
|
chmod(1)、ls(1)、stat(2)、attributes(5)、environ(5)、largefile(5)、standards(5)
链接到目录的符号链接在某些情况下的行为可能与您的预期有所不同。针对此链接使用 ls(1) 命令可显示所指向的目录中的文件,而输入 ls –l 则显示有关链接本身的信息。
example% ln -s dir link example% ls link file1 file2 file3 file4 example% ls -l link lrwxrwxrwx 1 user 7 Jan 11 23:27 link -> dir
当使用 /usr/bin/sh 或 /usr/bin/csh 通过符号链接转到一个目录时(请参见 cd(1)),将停止于文件系统内所指向的位置。这意味着新工作目录的父项不是符号链接的父项,而是所指向目录的父项。将 cd 与 /usr/bin/ksh 或 /usr/xpg4/bin/sh 中的 –P 选项结合使用时也会出现此情况。例如,在以下情况中,最终工作目录是 /usr 而不是 /home/user/linktest。
example% pwd /home/user/linktest example% ln -s /usr/tmp symlink example% cd symlink example% cd . . example% pwd /usr
C shell 用户通过使用 pushd 和 popd 内置命令来代替 cd 可避免产生任何导航问题。