了解 ln 的用法

了解 ln 的用法

从 coreutils 手册中,对于ln

ln 在文件之间建立链接。默认情况下,它会建立硬链接;使用 -s 选项,它会创建符号(或软)链接。简介:

ln [option]... [-T] target linkname
ln [option]... target
ln [option]... target... directory
ln [option]... -t directory target...

• 如果给出两个文件名,ln 将创建从第二个文件到第一个文件的链接。

• 如果给定一个目标,ln 将在当前目录中创建指向该文件的链接。

如果给出了 --target-directory (-t) 选项,或者如果最后一个文件是目录并且未给出 --no-target-directory (-T) 选项,则 ln 会创建到每个目标的链接使用目标名称将文件保存在指定目录中。

粗体部分是什么意思?

特别是以下内容是什么意思

  • “如果最后一个文件是目录则失败”
  • “使用目标的名字”?

谢谢。

答案1

这意味着如果您选择ln /path/to/files/* /path/to/some/directory/或,则会创建ln -t /path/to/some/directory/ /path/to/files/*指向每个匹配文件的链接,其名称与原始文件的名称相同。/path/to/files/*/path/to/some/directory/

答案2

我认为 http://linux.die.net/man/1/ln

使它更清楚。您有以下表格:

  1. ln [选项]... [-T] TARGET LINK_NAME(第一种形式)
  2. ln [选项]...目标(第二种形式)
  3. ln [选项]...目标...目录(第三种形式)
  4. ln [选项]... -t 目录目标...(第四种形式)

-t, --target-directory=DIRECTORY
specify the DIRECTORY in which to create the links
-T, --no-target-directory
treat LINK_NAME as a normal file

-T表示如果您传递两个参数,则绝对意味着形式 1(第二个参数是 link_name),而不是 3——换句话说,您要确保没有意外地传递目录作为第二个参数。

例子:

mkdir output
ln -s /etc/passwd output #OK passwd link goes into output/passwd

对比

mkdir output
ln -sT /etc/passwd output #FAIL; output is already taken and is a directory

链接-t,是相反的-T。它期望后面的任何内容都是一个可以放置链接的目录,这允许您执行以下操作:

list_link_targets | xargs -d '\n' ln -s -t directory

这对于第三种形式来说更具挑战性。

相关内容