来自 coreutils 的手册,对于 ln
ln 在文件之间建立链接。默认情况下,它是硬链接;使用 -s 选项,它可以创建符号(或软)链接。概要:
Run Code Online (Sandbox Code Playgroud)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 会创建一个指向每个文件的链接指定目录中的目标文件,使用目标的名称。
粗体部分是什么意思?
特别是以下是什么意思
谢谢。
这意味着如果您使用ln /path/to/files/* /path/to/some/directory/
或ln -t /path/to/some/directory/ /path/to/files/*
,/path/to/files/*
将创建指向每个匹配文件的链接,其/path/to/some/directory/
名称与原始文件相同。
我认为 http://linux.die.net/man/1/ln
使它更清楚。你有这些表格:
和
-t, --target-directory=DIRECTORY
specify the DIRECTORY in which to create the links
-T, --no-target-directory
treat LINK_NAME as a normal file
Run Code Online (Sandbox Code Playgroud)
-T
说如果你传递两个参数,你绝对是指形式 1(第二个参数是链接名称),而不是 3——换句话说,你要确保你没有意外地将目录作为第二个参数传递。
例子:
mkdir output
ln -s /etc/passwd output #OK passwd link goes into output/passwd
Run Code Online (Sandbox Code Playgroud)
对比
mkdir output
ln -sT /etc/passwd output #FAIL; output is already taken and is a directory
Run Code Online (Sandbox Code Playgroud)
链接-t
,是相反的-T
。它期望它后面的任何内容都是一个放置链接的目录,这允许您执行以下操作:
list_link_targets | xargs -d '\n' ln -s -t directory
Run Code Online (Sandbox Code Playgroud)
这对于第 3 种形式将更具挑战性。
归档时间: |
|
查看次数: |
4745 次 |
最近记录: |