无法将目录与所有文件内容进行符号链接

无法将目录与所有文件内容进行符号链接

我想符号链接locations~/locations.

这样 中的所有内容locations都会出现在 中~/locations

 λ tree locations/
locations/
├── adelaide
│   └── config
├── amber
│   └── config
├── austin
│   └── config
├── boston
│   └── config
├── boulder
│   └── config
├── durham
│   └── config
├── jade
│   └── config
├── losangeles
│   └── config
├── minsk
│   └── config
├── newcastle
│   └── config
├── opal
│   └── config
└── pearl
    └── config

当我尝试对它们进行符号链接时,它没有达到我的预期:

 λ ln -s locations/*/* ~/locations
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations/config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations/config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists

tree locations
 λ tree ~/locations/
/Users/bob.smith/locations/
└── config -> locations/Adelaide/config

locations正如您所看到的,输出中缺少之后的目录。

我在这里做错了什么?

答案1

目前尚不清楚您要达到的确切效果:只是一个目录符号链接,还是符号链接指向单个文件的“链接场”?

符号链接是一个包含路径的小文件。当在名称解析期间访问该文件时,该路径将被替换。该路径可以是相对路径或绝对路径。

要创建目录符号链接,只需执行以下操作:

ln -s locations ~/locations

然而,这有一个问题!它将locations在您的主目录中创建一个名为的符号链接,例如/home/yourname/locations.该符号链接的内容将是相对路径locations。换句话说,该符号链接将指向自身,从而创建一个无用的循环。

您需要提供正确的相对路径,或者绝对路径,例如:

ln -sf /absolute/path/to/locations ~/locations

如果您有一个名为 的实用程序realpath,则可以在其子目录为的父目录中执行此操作locations

ln -sf "$(realpath locations)" ~/locations

realpath打印 的绝对路径locations,其中所有符号链接均已解析;命令$(...)替换语法将其替换到命令行中。我在它周围加了引号,以防生成的路径包含空格,从而将其分成多个参数。

可以使用符号链接镜像文件树。有一个lndir源自 XWindow 系统的实用程序。通常,如果您想lndir安装在 GNU/Linux 发行版上,它会与 X 内容一起打包。lndir创建一个模仿原始目录树的空目录树骨架,并用指向相应原始文件的符号链接填充它。

如果您有一个文件树,您想通过符号链接的平面目录访问该文件树,则必须为此编写一个脚本。

相关内容