在Ubuntu中创建目录的符号链接[关闭]

Posted

技术标签:

【中文标题】在Ubuntu中创建目录的符号链接[关闭]【英文标题】:Create a symbolic link of directory in Ubuntu [closed] 【发布时间】:2012-02-24 15:15:27 【问题描述】:

以下是我创建目录符号链接的代码:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

我已经创建了目录/etc/nginx。我只希望源目录 (/usr/local/nginx/conf/) 的内容位于目标目录 (/etc/nginx) 的内容中。但是当我执行代码时,/etc/nginx 包含一个名为conf 的目录,而不是conf 的内容。该目录包含我想要的内容,但位置错误。

为什么把目录放到目标文件夹,而不是把目录的内容放到目标文件夹?

【问题讨论】:

您也可以使用文件(默认文件浏览器)。右键单击要链接的文件夹>“建立链接”选项。它将创建链接文件夹,您可以根据需要移动和重命名。 使用 linux bind mount 功能。 example 【参考方案1】:

如果第二个参数是目录,这是ln 的行为。它会在其中放置一个指向第一个参数的链接。如果您希望 /etc/nginx 成为符号链接,则应先删除该目录并运行相同的命令。

【讨论】:

相关:unix.stackexchange.com/questions/84175/weird-behavior-of-gnu-ln 那个 Unix.SE 链接在此处解析。似乎我们有一个循环依赖。【参考方案2】:

当目标已经存在并且是一个目录时,ln 会这样做。如果您希望/etc/nginx成为符号链接而不是包含符号链接,您最好不要先将其创建为目录!

【讨论】:

你的答案只有在读者已经知道答案的情况下才有意义。对任何会提出问题的人来说都是无用的 我真的可以创建一个符号链接到已挂载的 USB 设备的根目录吗(因此我不能先删除这个文件夹)? @GrigoryKornilov 你可以创建一个符号链接任何你想要的东西,包括不存在的东西。这个问题是关于创建符号链接的位置(而不是它指向的位置)。文件系统中的特定路径名要么是常规文件,要么是目录,要么是符号链接(或者是套接字、管道或设备)。它不能同时其中之一(即,您不能拥有多个具有完全相同名称的不同文件)。【参考方案3】:

在脚本中有用的是这样的:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

它可以防止在重新运行脚本后重新创建“坏”循环符号链接之前

【讨论】:

太棒了!这是确切的解决方案。如果目录已经存在,则无需创建目录。这是一个非常好的硬链接调整并将其沉入黑洞(/dev/null)

以上是关于在Ubuntu中创建目录的符号链接[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ubuntu 中创建符号链接

在Python中创建可执行的符号链接?

为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件

如何在像“ln -s TARGET DIRECTORY”这样的目录中创建符号链接?

sh 在双引导系统中创建windows和linux android SDK的常用目录中的符号链接。

在 laravel 5.2 中创建符号链接时出错?