Answers:
链接到当前目录作为绝对路径而不输入整个路径字符串的最简单方法是
ln -s "$(pwd)/foo" ~/bin/foo_link
该命令的target(第一个)参数ln -s相对于符号链接的位置而不是当前目录起作用。从本质上讲,它有助于创建的符号链接(第二个参数)仅保存您为第一个参数提供的文本。
因此,如果您执行以下操作:
cd some_directory
ln -s foo foo_link
然后移动该链接
mv foo_link ../some_other_directory
ls -l ../some_other_directory
您将看到foo_link 尝试指向foo其所在目录的方法。这也适用于指向相对路径的符号链接。如果您执行以下操作:
ln -s ../foo yet_another_link
然后移至yet_another_link另一个目录并检查其指向的位置,您将看到它始终指向../foo。这是预期的行为,因为许多时候符号链接可能是目录结构的一部分,该目录结构可以驻留在各种绝对路径中。
就您而言,当您通过键入以下内容创建链接时
ln -s foo ~/bin/foo_link
foo_link只是持有foo相对于其位置的链接。将$(pwd)目标参数的名称放在前面仅会添加当前工作目录的绝对路径,以便使用绝对目标创建链接。
source_file(第一)的说法是该链接指向哪里,这是逐字你在命令中输入的内容。该target_file(第二)参数变成链路的名称,除非你进入的是一个目录,在这种情况下,链接名称相同的基本名称source_file,但放在该目录target_file。
ln手册页,target是第一个参数(其中链接指向到),而第二个参数被简称为link(source没有提及)。
target,第二个参数link(man7.org/linux/man-pages/man1/ln.1.html)。但是在BSD(包括OS X)中,第一个被调用source,第二个被调用target(freebsd.org/cgi/man.cgi?ln)。相当混乱。
要保存一些输入内容,您可以
ln -s "$PWD"/foo ~/bin/foo_link
*是?和[...])也是一个问题。
bash,因此引用它通常是一个好主意。不好,我应该更具体一些。