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

Linux 在Ubuntu中创建目录的符号链接,linux,terminal,symlink,Linux,Terminal,Symlink,下面是我创建目录符号链接的代码: sudo ln -s /usr/local/nginx/conf/ /etc/nginx 我已经创建了目录/etc/nginx。我只希望源目录(/usr/local/nginx/conf/)的内容位于目标目录(/etc/nginx)的内容中。但是当我执行代码时,/etc/nginx包含一个名为conf的目录,而不是conf的内容。该目录包含我想要的内容,但位置错误 为什么它将目录放在目标文件夹中,而不是将目录的内容放在目标文件夹中?如果第二个参数是目录,这是l

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

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


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

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

当目标已存在且为目录时,这就是
ln
的操作。如果希望
/etc/nginx
成为符号链接,而不是包含符号链接,最好不要先将其创建为目录

脚本中的非常有用,如下所示:

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

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

您的答案只有在读者已经知道答案的情况下才有意义。这对任何想问这个问题的人来说都是无用的。我可以创建一个指向已安装USB设备根目录的符号链接吗(因此我不能先删除此文件夹)?@GrigoryKornilov您可以创建指向任何您想要的东西的符号链接,包括不存在的东西。这个问题与符号链接的创建位置有关(而不是它指向的位置)。文件系统中的特定路径名要么是常规文件,要么是目录,要么是符号链接(或者是套接字、管道或设备)。它不能同时是这些内容中的多个(即,不能有多个具有完全相同名称的不同文件)。相关:Unix.SE链接解析回此处。似乎我们有一个循环依赖。你也可以使用文件(默认的文件浏览器)。右键单击要链接的文件夹>“创建链接”选项。它将创建链接文件夹,您可以根据需要移动和重命名该文件夹。使用linux
bind mount
功能。杰出的这就是精确解。如果目录已经存在,则无需创建该目录。这是一个非常好的调整,可以硬链接并将其放入黑洞(/dev/null)