在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
的内容。该目录包含我想要的内容,但位置错误。
为什么把目录放到目标文件夹,而不是把目录的内容放到目标文件夹?
【问题讨论】:
您也可以使用文件(默认文件浏览器)。右键单击要链接的文件夹>“建立链接”选项。它将创建链接文件夹,您可以根据需要移动和重命名。 使用 linuxbind 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中创建目录的符号链接[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件
如何在像“ln -s TARGET DIRECTORY”这样的目录中创建符号链接?