我想符号链接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
创建一个模仿原始目录树的空目录树骨架,并用指向相应原始文件的符号链接填充它。
如果您有一个文件树,您想通过符号链接的平面目录访问该文件树,则必须为此编写一个脚本。