在Ubuntu中创建目录的符号链接


247

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

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

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

为什么将目录放置在目标文件夹中,而不是仅将目录内容放置在目标文件夹中?


您也可以使用文件(默认文件浏览器)。右键单击要链接的文件夹>“链接”选项。它将创建链接的文件夹,您可以根据需要移动和重命名该文件夹。
John Linhart 2014年

4
使用linux bind mount功能。示例
gkiko

Answers:



30

这就是ln被记录在目标已经存在,并且是一个目录做。如果你想/etc/nginx成为一个符号,而不是包含一个符号,你最好不要将其创建为一个目录第一!


51
您的答案仅在读者已经知道答案的情况下才有意义。这对任何问这个问题的人都没有用
里卡多·萨波特

1
我是否可以实际创建到已安装USB设备根目录的符号链接(因此无法首先删除此文件夹)?
Grigory Kornilov

1
@GrigoryKornilov,您可以创建指向所需内容的符号链接,包括不存在的内容。这个问题与创建符号链接的位置有关(而不是指向的位置)。文件系统中的特定路径名是常规文件,或者是目录,或者是符号链接(或者是套接字,管道或设备)。它不能同时包含这些内容中的一项(即,您不能有多个具有完全相同名称的不同文件)。
Celada

10

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

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

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


1
优秀的!这是确切的解决方案。如果目录已经存在,则无需创建。硬链接并将其沉入黑洞中确实是一个很好的调整(/ dev / null)
Cosmo Arun
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.