Macos 符号链接源项可以';找不到
我正在尝试在一组目录中创建目录的别名Macos 符号链接源项可以';找不到,macos,bash,shell,alias,symlink,Macos,Bash,Shell,Alias,Symlink,我正在尝试在一组目录中创建目录的别名 for D in $(find * -maxdepth 0 -type d) ; do ln -s location/to/directory/ $D/Test2 ; done 看起来链接是正确的(我可以在我的finder窗口中看到),但是当我双击它时,我得到错误操作无法完成,因为找不到“Test2”的原始项。 为什么这样不行?bash脚本有没有办法生成一个“普通”的mac别名?我已经按照建议打开了权限,但运气不好。你想做什么 将链接视为cp命令。
for D in $(find * -maxdepth 0 -type d) ; do
ln -s location/to/directory/ $D/Test2 ;
done
看起来链接是正确的(我可以在我的finder窗口中看到),但是当我双击它时,我得到错误操作无法完成,因为找不到“Test2”的原始项。
为什么这样不行?bash脚本有没有办法生成一个“普通”的mac别名?我已经按照建议打开了权限,但运气不好。你想做什么 将链接视为
cp
命令。也许这会有帮助:
# Copies the 'svnadmin' command from /opt/svn/bin to /usr/local/bin
$ cp /opt/svn/bin/svnadmin /usr/local/bin
# Links the 'svnadmin' command from /opt/svn/bin to /usr/local/bin
$ ln -s /opt/svn/bin/svnadmin /usr/local/bin
请注意,ln
和cp
命令具有相同的文件顺序
在您的命令中,您反复地将任何位置/链接到/directory/
到$D/test2
另外,-maxdepth 0
将不在目录的第一级
我在安装新软件时使用ln
,二进制命令位于其他目录中。我没有基于$PATH
来包含所有这些额外的目录,而是象征性地将它们链接到/usr/local/bin
:
$ cd /usr/share/apache-ant/bin
$ for file in *
> do
> [[ -f $file ]] || continue
> ln -s $PWD/$file /usr/local/bin/$file
> done
请注意,链接只是将第一个文件的整个引用复制到链接。我想确保这个链接在任何地方都有效,所以我在它前面加上前缀$PWD
。这样,我的链接如下所示:
$ ls -l ant
lrwxr-xr-x 1 root wheel 29 Sep 3 2014 ant -> /usr/share/apache-ant/bin/ant
创建链接时使用绝对源路径。这对我来说也有同样的问题。您想在当前目录的每个目录中创建一个名为
Test2
的符号链接,并且每个创建的链接都应该指向location/to/directory
for dir in */; do
ln -s 'location/to/directory' "$dir/Test2"
done
*
后面的斜杠确保我们只匹配当前目录中的目录,或链接到当前目录中的目录
如果你只对真正的目录感兴趣,而不是符号链接的目录,你可以使用
find . -type d -mindepth 1 -maxdepth 1 \
-exec ln -s 'location/to/directory' {}/Test2 ';'
请注意,链接目的地与链接的位置相关,因此如果目录不包含location/to/directory
,则链接将处于“死”状态
您可以通过指定链接的绝对路径来解决此问题。解释下一票,我将尝试解决此问题。如果符号链接B指向A,则会询问为什么在B上使用finder双击时无法打开资源A。@jjalonso,除非Mac的finder在找到链接时双击时打开符号链接。我使用
$HOME/Documents
将其作为指向$HOME/Dropbox/Documents
的符号链接。双击Finder中的$HOME/Documents
,即可正常工作。与Dock或Pathfinder相同。我使用的所有程序都没有符号链接的问题。就Mac而言,$HOME/Documents
目录就在那里。如果OP的符号链接有问题,则表示符号链接制作不正确。这就是为什么我建议将完整路径放在符号链接中。David,你关于在符号链接中使用完整路径的评论对我起了作用。谢谢