如果文件夹存在,有没有办法不创建符号链接

如果文件夹存在,有没有办法不创建符号链接

我有类似的东西

文件夹 A ,当我这样做时,ln -s A a 它会创建符号链接文件夹 a 现在,如果我重复该命令,ln -s A a我会得到死链接 a/A

有没有一种方法可以让 ln 失败(如果链接存在),而不是将所有内容都包装在 ifexists 语句中?

答案1

如果您正在寻找的是单个命令的单个条件测试,则不需要语句if- 只需使用列表

根据LESS=+/Lists man bash

   A  list  is a sequence of one or more pipelines separated by one of the
   operators ;, &, &&, or ||, and optionally terminated by one of ;, &, or
   <newline>.
...
   An AND list has the form

         command1 && command2

   command2  is  executed if, and only if, command1 returns an exit status
   of zero.

假设您希望存在的文件夹存在,并且您只想在该目录存在时mydir创建链接。mylink2dir你可以使用:

[ -d mydir ] && ln -s mydir mylink2dir

或者等价地:

test -d mydir && ln -s mydir mylink2dir

答案2

使用该-n选项可以避免创建目录。这将覆盖现有的符号链接,但不会在现有符号链接指向的目录内创建链接。

ln -sn A a

ln -n不是 POSIX,但存在于 GNU coreutils、BusyBox 和 *BSD(包括 OSX)上。

相关内容