我想为文件夹中的所有文件创建符号链接parent/target/
。我希望链接位于该文件夹中parent/destination/
。我的工作目录是parent/
使用以下终端输出的bash
:
$ cd target/
$ ll
total 16
drwxr-xr-x 4 jesse staff 136 Feb 23 16:31 ./
drwxr-xr-x@ 10 jesse staff 340 Feb 23 16:38 ../
-rw-r--r-- 1 jesse staff 10 Feb 23 16:23 file.txt
-rw-r--r-- 1 jesse staff 10 Feb 23 16:23 file2.txt
$ ln -s * ../destination/
$ ll ../destination/
total 16
drwxr-xr-x 4 jesse staff 136 Feb 23 16:38 ./
drwxr-xr-x@ 10 jesse staff 340 Feb 23 16:38 ../
lrwxr-xr-x 1 jesse staff 8 Feb 23 16:38 file.txt@ -> file.txt
lrwxr-xr-x 1 jesse staff 9 Feb 23 16:38 file2.txt@ -> file2.txt
为什么要创建链接到自身的符号链接?我已经阅读了ln
手册页以及其他各种与ln
SE相关的问题,但是我想我只是缺少了一些东西。
(我在OS X 10.11.3的终端中使用bash)
您需要在源中指定一个绝对路径:在您的情况下,它将是:
ln -s $PWD/* ../destination/
与硬链接不同,在硬链接中创建的目录条目直接引用相同的源文件,而符号链接则包含原始文件引用的文本。确实,创建符号链接时源文件不必存在,尽管显然您的使用*
可确保仅使用现有的源文件。
实际上,这要复杂得多:如果在链接中指定了绝对路径,则引用链接的行为就好像您已指定原始文件一样;但是如果您指定相对路径,则会将其添加到链接所在的目录中。因此,您可以从target
目录中使用的替代方法是:
cd ../destination/; ln -s ../target/* .
这将与绝对路径具有相同的效果,但有一个区别:如果将整个目录树复制或移动到另一个位置(例如,其他用户目录中的某个位置),则链接将引用文件在其新位置中。因此,绝对链接或相对链接的选择取决于您是否希望将源文件与链接一起复制或移动:如果源文件将始终保留在同一位置,请使用绝对链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句