如何在Linux中创建多级软链接,或者可以这样做?

如何在Linux中创建多级软链接,或者可以这样做?,linux,unix,symlink,Linux,Unix,Symlink,我继承了无法触摸的旧脚本-不要问。它引用安装在位置/SuperSoft/SomeSoft/ 自收购后重新制作的新版软件安装在 /usr/local/SomeSoft 我一直在尝试在根级别创建以下软链接: ln-s SuperSoft/SomeSoft//usr/local/SomeSoft/ 我不想在根级别创建一个SuperSoft目录。这能做到吗?很难得到你想要的。使用此链接: ln -s /usr/local/SuperSoft/ /SuperSoft/ 现在,您可以使用以下ls浏览/Su

我继承了无法触摸的旧脚本-不要问。它引用安装在位置
/SuperSoft/SomeSoft/

自收购后重新制作的新版软件安装在
/usr/local/SomeSoft

我一直在尝试在根级别创建以下软链接:

ln-s SuperSoft/SomeSoft//usr/local/SomeSoft/


我不想在根级别创建一个
SuperSoft
目录。这能做到吗?

很难得到你想要的。使用此链接:

ln -s /usr/local/SuperSoft/ /SuperSoft/
现在,您可以使用以下
ls
浏览
/SuperSoft/SomeSoft
的内容:

ls -al /SuperSoft/SomeSoft

很难得到你想要的。使用此链接:

ln -s /usr/local/SuperSoft/ /SuperSoft/
现在,您可以使用以下
ls
浏览
/SuperSoft/SomeSoft
的内容:

ls -al /SuperSoft/SomeSoft

在文件系统的两个部分中拥有相同的文件也可以通过挂载来完成

从linux上的“man mount”开始:


在文件系统的两个部分中拥有相同的文件也可以通过挂载来完成

从linux上的“man mount”开始:


您正在查找第一种形式的
ln

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
使用
-s
作为选项,因为您需要符号链接。
TARGET
是符号链接的“值”——即链接将指向的对象。
LINK\u NAME
是正在创建的链接的实际位置。因此,要在
/SuperSoft/SomeSoft
处创建指向
/usr/local/SomeSoft
的符号链接,您需要执行以下操作:

ln -s /usr/local/SomeSoft /SuperSoft/SomeSoft
在一个长长的列表中看起来像这样:

$ ls -l /SuperSoft/SomeSoft
lrwxrwxrwx 1 user group 18 May 23 13:43 /SuperSoft/SomeSoft -> /usr/local/SomeSoft
因此,您可以将新版本的软件正常安装到
/usr/local
,当您的现有脚本尝试访问
/usr/local
时,无法修改的脚本将指向
/usr/local

注意,这样做假定存在一个名为
/SuperSoft
的目录。如果这不是您的选项(或者您只是不想这样做),那么您可以在
/SuperSoft
上创建一个符号链接,指向
/usr/local
ln-s/usr/local/SuperSoft
),因为访问
/SuperSoft/SomeSoft
将变成
/usr/local/SomeSoft
。不过我不建议这样做,因为它不太干净

更新:

另一种使
/SuperSoft
成为符号链接的方法是:

mkdir /usr/local/SuperSoft
ln -s /usr/local/SuperSoft /SuperSoft
ln -s /usr/local/SomeSoft /SuperSoft/SomeSoft

在任何情况下,都需要有一个目录,其中包含指向
/user/local/SomeSoft
的链接,您正在查找
ln
的第一种形式:

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
使用
-s
作为选项,因为您需要符号链接。
TARGET
是符号链接的“值”——即链接将指向的对象。
LINK\u NAME
是正在创建的链接的实际位置。因此,要在
/SuperSoft/SomeSoft
处创建指向
/usr/local/SomeSoft
的符号链接,您需要执行以下操作:

ln -s /usr/local/SomeSoft /SuperSoft/SomeSoft
在一个长长的列表中看起来像这样:

$ ls -l /SuperSoft/SomeSoft
lrwxrwxrwx 1 user group 18 May 23 13:43 /SuperSoft/SomeSoft -> /usr/local/SomeSoft
因此,您可以将新版本的软件正常安装到
/usr/local
,当您的现有脚本尝试访问
/usr/local
时,无法修改的脚本将指向
/usr/local

注意,这样做假定存在一个名为
/SuperSoft
的目录。如果这不是您的选项(或者您只是不想这样做),那么您可以在
/SuperSoft
上创建一个符号链接,指向
/usr/local
ln-s/usr/local/SuperSoft
),因为访问
/SuperSoft/SomeSoft
将变成
/usr/local/SomeSoft
。不过我不建议这样做,因为它不太干净

更新:

另一种使
/SuperSoft
成为符号链接的方法是:

mkdir /usr/local/SuperSoft
ln -s /usr/local/SuperSoft /SuperSoft
ln -s /usr/local/SomeSoft /SuperSoft/SomeSoft

在任何情况下,都需要有一个包含指向
/user/local/SomeSoft
的链接的目录。不,您不能创建作为目录路径的符号链接。符号链接只是普通目录中的一个条目,因此它必须符合所有常规命名规则

如果需要符号链接“/SuperSoft/SomeSoft”,则“/SuperSoft”必须存在。它可以是一个目录,也可以是指向其他地方的符号链接,但它必须是某种东西


如果绝对不想在/中创建新目录,那么可以使用适当的目录/symlinks/etc创建一个假/并在那里运行脚本chrooted()。但这比创建一个目录要复杂得多。

不,不能创建作为目录路径的符号链接。符号链接只是普通目录中的一个条目,因此它必须符合所有常规命名规则

如果需要符号链接“/SuperSoft/SomeSoft”,则“/SuperSoft”必须存在。它可以是一个目录,也可以是指向其他地方的符号链接,但它必须是某种东西


如果绝对不想在/中创建新目录,那么可以使用适当的目录/symlinks/etc创建一个假/并在那里运行脚本chrooted()。但这不仅仅是创建一个目录,还需要更多的设置。

如果你避免创建
/SuperSoft
,那么我假设
/usr/local/SomeSoft
是现有的目录,而
/SuperSoft/SomeSoft
是你没有的目录(或者我误解了?)。然后,您可以交换
ln-s
上的参数,因为现有路径是第一个,新路径是第二个。此外,我尝试在2级未创建的路径上使用ln,但它不起作用。如果你做了
ln-s/usr/local/SuperSoft
,怎么样?我想这样就可以了,不过你也可以从
/SuperSoft
访问
/usr/local
(不确定这是否是一个不良的副作用)。如果你避免创建
/SuperSoft
,那么我假设
/usr/local/SomeSoft
就是存在的