我多年来一直ln
编写符号链接,但我仍然得到错误的参数顺序。
这通常让我写:
ln -s a b
然后查看输出来提醒自己。
我总是想象a -> b
自己读到的内容是这样,但实际上却恰恰相反b -> a
。这感觉违反直觉,所以我发现我总是事后怀疑自己。
有人有任何提示可以帮助我记住正确的顺序吗?
答案1
我的想法ln
是“就像cp
。‘来源’需要放在第一位。”
答案2
我使用以下内容:ln
有一个单参数形式(第 2 种形式在联机帮助页),其中只需要目标(因为在ln
不知道目标的情况下如何工作)并ln
在当前目录中创建链接。双参数形式是对单参数形式的补充,因此目标始终是第一个参数。
答案3
大多数 Unice 将ln
命令记录为
ln source target
(我在这里省略选项等)
例子:
-
ln [-fs] [-L|-P] source_file target_file
-
ln [-fhLnPs] source [target]
-
ln [-L | -P | -s [-F]] [-f | -iw] [-hnv] source_file [target_file]
苹果系统
ln [-Ffhinsv] source_file [target_file]
-
/usr/bin/ln [-fns] source_file [target]
-
ln [ -f | -n ] [ -s ] SourceFile [ TargetFile ]
GNUln
手册很奇怪,它称source
目标和target
链接名。
-
ln [option]… [-T] target linkname
忽略 GNU 对单词的选择,该实用程序遵循与ln
例如mv
和相同的语义cp
这目标是从创建的来源。
所以,
ln -s a b
b
将创建指向 的符号链接a
。或者换句话说,是创建用作源的b
符号链接的操作的目标。a
创建时注意象征性的链接,源只是一个表示符号链接应指向的字符串。通常不会进行检查来验证它是否指向任何有用的内容:
$ ln -s "hello world" README.txt
$ ls -l
total 0
lrwxr-xr-x 1 kk wheel 11 Sep 15 11:39 README.txt -> hello world
关于 GNU 选择使用“目标”和“链接名称”而不是“源”后跟“目标”的个人想法:
似乎很明显,第二个参数(创建的内容)应该是“链接名称”,第一个参数(链接的目标)应该是“目标”。然而,只有当你使用链接。
当你创造链接,即您正在执行的操作ln
,第二个参数,即创建的内容,是ln
操作的“目标”,它是使用第一个参数“源”创建的。
这与其他基本工具的参数的类似“源”->“目标”顺序一起,使得非 GNU 文档看起来ln
更加自然。
答案4
如果这对任何人有帮助:我已经习惯将其视为“ln什么 在哪里”,这帮助我记住第一个参数(“什么”)是现有文件,第二个参数(“哪里”)是放置(链接)它的位置。与大多数其他答案中的推理相反,这只不过是我在输入命令时可以在心里背诵的简洁短语,它可以作为记忆辅助。这可能不会对每个人都有用,但我怀疑它会对某些人有所帮助。
其他标准文件操作命令使用相同的约定会有所帮助,因此我可以对cp
和执行相同的操作mv
。