我已经使用ln
符号链接写了很多年了,但我仍然把参数的顺序弄错了。
这通常让我写:
ln -s a b
Run Code Online (Sandbox Code Playgroud)
然后看着输出提醒自己。
我总是想像a -> b
我读它时的样子,但实际上恰恰相反b -> a
。这感觉违反直觉,所以我发现我总是在怀疑自己。
有没有人有任何提示可以帮助我记住正确的顺序?
Her*_*ann 94
我去“ln
就像cp
。'来源'需要放在第一位。”
gar*_*ary 43
我使用以下内容:ln
有一个单参数形式(手册页中列出的第二种形式),其中只需要目标(因为ln
根本不知道目标如何工作)并ln
在当前目录中创建链接。双参数形式是单参数形式的补充,因此目标始终是第一个参数。
Kus*_*nda 10
大多数 Unices 将ln
命令记录为
ln source target
Run Code Online (Sandbox Code Playgroud)
(我在这里省略了选项等)
例子:
ln [-fs] [-L|-P] source_file target_file
Run Code Online (Sandbox Code Playgroud)
ln [-fhLnPs] source [target]
Run Code Online (Sandbox Code Playgroud)
ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file [target_file]
Run Code Online (Sandbox Code Playgroud)
苹果系统
ln [-Ffhinsv] source_file [target_file]
Run Code Online (Sandbox Code Playgroud)
/usr/bin/ln [-fns] source_file [target]
Run Code Online (Sandbox Code Playgroud)
ln [ -f | -n ] [ -s ] SourceFile [ TargetFile ]
Run Code Online (Sandbox Code Playgroud)
GNUln
手册很奇怪,它调用了source
target和target
linkname。
ln [option]… [-T] target linkname
Run Code Online (Sandbox Code Playgroud)
忽略GNU选择的话,该ln
实用程序遵循相同的排序语义例如mv
并且cp
在该目标是什么是从创建的源。
所以,
ln [-fs] [-L|-P] source_file target_file
Run Code Online (Sandbox Code Playgroud)
将创建b
指向a
.
另请注意,在创建符号链接时,源只是一个字符串,表示符号链接应指向的内容。通常没有检查来验证它是否指向任何有用的东西:
ln [-fhLnPs] source [target]
Run Code Online (Sandbox Code Playgroud)
个人认为 GNU 选择使用“目标”和“链接名称”而不是“源”后跟“目标”:
很明显,第二个参数,即创建的东西,应该是“链接名称”,而第一个参数,链接的目标,是“目标”。但是,这仅在您使用链接时才是正确的。
当您创建链接时,即您正在执行的操作ln
,第二个参数,即创建的内容,是操作的“目标” ln
,它是使用第一个参数“源”创建的。
这与其他基本工具的类似“源”->“目标”参数顺序一起,使非 GNU 文档ln
看起来更自然。
如果这对任何人有帮助:我已经习惯于将其视为“ln what where ”,这有助于我记住第一个参数(“what”)是现有文件,第二个参数(“where”)是位置把(链接到)它。与大多数其他答案中的推理相反,这只不过是一个简洁的短语,我可以在输入命令时在心里背诵,作为记忆辅助工具。这可能不会对每个人都有用,但我怀疑它会帮助一些人。
它有助于其他标准文件操作命令使用相同的约定,因此我可以对cp
和执行相同的操作mv
。