符号链接到当前文件夹作为绝对路径,而无需键入整个路径


10

符号链接是相对路径的保存的快捷方式:

~/foo ln -s . ~/bar/foo
~/foo ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .

该文件~/bar/foo是到bar当前目录的符号链接,即自身

如果我想在另一个目录中创建到当前目录的符号链接,该怎么办?因此,在上面的示例中,我进入~/foo并想创建~/bar/foo到的符号链接~/foo。当然,我当前的目录可能比5个字符长很多,并且可能不太容易键入。

Answers:


13

我会说类型

ln -s $PWD ~/bar/

要么

ln -s `pwd` ~/bar/

您也可以使用

ln -s $PWD ~/bar/

但是我想你知道,那不是你要照顾的。因此,您能否更新您的问题以说明您的目标是什么?

如果路径包含空格,则建议使用:

ln -s "$PWD" ~/bar/

2
用双引号$括住变量和命令替换,否则带空格的文件名将影响运行。您也不需要结尾$(basename $PWD)(并且您忘记了结尾(并用$引号:-)),因为无论如何这都是默认的链接名称。
Daniel Andersson

我觉得我很傻。我以为我尝试了这种pwd方法,但出了点问题。让我们把它放下来的ID十-T的错误
加雷

@DanielAndersson您说对了,它不支持路径中的空格。好点子。因此,为了记录在案,我将更新答案:)
惠更斯(Huygens)2012年

4

绝对:

ln -s "$(readlink -f .)" ~/bar

(可能有利于脚本的通用性)或

ln -s ~/foo ~/bar

相对:

ln -s ../foo ~/bar

制表符补全将帮助您键入。


从grawity的评论和http://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.html

*版本8.16(2012-03-26)中的显着变化[稳定]

...

ln现在接受--relative选项,以生成到目标的相对符号链接,而不管如何指定目标。

因此,使用此版本:

ln -s --relative . ~/bar

应该可以工作(实际上与第一个示例相同,只是增加了--relative开关)。


4
最新的coreutils可以使用来自动创建相对的符号链接ln -s -r foo ~/bar
user1686

@grawity:有趣。显然,尚未在我的系统上(Debian Sid)。
丹尼尔·安德森

根据git的说法,它似乎已在3月22日为v8.16添加了。
user1686

1
另外,$(readlink -f .)over 的优点是$PWD什么?
user1686

2
@grawity:不多。如果通过链接访问了当前工作目录,则它们的工作方式有所不同。readlink -f然后将符号链接到当前目录的绝对目标路径,而$PWD将符号链接链接到当前目录中的原义目录。所需的内容可能会不时有所不同,并且首要地根本不是问题。
丹尼尔·安德森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.