记住 ln 参数顺序的技巧?

Zhr*_*hro 72 symlink ln

我已经使用ln符号链接写了很多年了,但我仍然把参数的顺序弄错了。

这通常让我写:

ln -s a b
Run Code Online (Sandbox Code Playgroud)

然后看着输出提醒自己。

我总是想像a -> b我读它时的样子,但实际上恰恰相反b -> a。这感觉违反直觉,所以我发现我总是在怀疑自己。

有没有人有任何提示可以帮助我记住正确的顺序?

Her*_*ann 94

我去“ln就像cp。'来源'需要放在第一位。”

  • ...就像`mv`。`mv`、`cp` 和 `ln` 都将现有文件作为第一个参数,将目标文件或目录名称作为第二个参数。 (21认同)
  • 遗憾的是`memcpy`、`strcpy` 等反之亦然。 (7认同)
  • @Hans-MartinMosner,除了当您创建符号链接时,它不必是现有文件... (6认同)
  • @s1lv3r `tar` 的参数不是位置的。存档文件的路径是“f(ile)”选项的参数。 (2认同)

gar*_*ary 43

我使用以下内容:ln有一个单参数形式(手册页中列出的第二种形式),其中只需要目标(因为ln根本不知道目标如何工作)并ln在当前目录中创建链接。双参数形式是单参数形式的补充,因此目标始终是第一个参数。

  • 请注意,没有目标/目标路径的形式是对`ln` POSIX 规范的扩展。 (3认同)
  • 这里有很多很好的答案(尤其是@loa_in_ 的押韵),但我会选择这个。声明参数的顺序是一致的(忽略`-t`)那么感觉几乎就像一个证明。“`ln` 在当前目录中创建链接。双参数形式是单参数形式的补充,因此目标始终是第一个参数”。因为在考虑第二种形式时*是有道理的*,我认为这将帮助我记住。 (2认同)

Kus*_*nda 10

大多数 Unices 将ln命令记录为

ln source target
Run Code Online (Sandbox Code Playgroud)

(我在这里省略了选项等)

例子:

GNUln手册很奇怪,它调用了source targettarget linkname

忽略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看起来更自然。

  • @KonradRudolph,相反,GNU 的措辞对我来说似乎很合适。该实用程序创建一个带有某个名称的链接,指向某处。“链接名称”有点明显,而“目标”是对指向 _to_ 的东西的完美描述。作为一个轶事,我有时仍然需要考虑 `ln -sab` 的工作方式,这与 GNU 的措辞无关,因为我认为我从未看过手册页中的措辞。:D (不确定时只运行 `ln -si ab` 会更容易,如果 `b` 已经存在,它会报错。) (7认同)
  • 我完全将人们弄错了这一事实归咎于 GNU 文档。事后看来,他们的措辞是可以理解的,但客观上却令人困惑。 (5认同)
  • @KonradRudolph,尽管从技术上来说,在硬链接的情况下将其称为“目标”是_错误的_,因为它不是现有名称,而是实际目标的索引节点。我想知道 GNU 人员是否认为普通用户不必考虑那么详细。 (2认同)

loa*_*in_ 9

我最近听到了一种记住这件事的好方法:押韵

一些旧的,一些新的,

借来的东西,蓝色的东西,

她的鞋子里还有六便士。

第一节是 ln 的参数是什么:旧的东西后跟新目录条目的名称。


Dav*_*d Z 7

如果这对任何人有帮助:我已经习惯于将其视为“ln what where ”,这有助于我记住第一个参数(“what”)是现有文件,第二个参数(“where”)是位置把(链接到)它。与大多数其他答案中的推理相反,这只不过是一个简洁的短语,我可以在输入命令时在心里背诵,作为记忆辅助工具。这可能不会对每个人都有用,但我怀疑它会帮助一些人。

它有助于其他标准文件操作命令使用相同的约定,因此我可以对cp和执行相同的操作mv

  • 我很想知道为什么这被否决了。这里没有太多可能出错的地方 - 我是否混淆了订单或其他什么? (4认同)