Есть ли способ не создавать сим-ссылку, если существует папка

У меня есть что-то вроде

папка A и когда я делаю ln -s A a он создает сим-связанную папку a now, если я повторяю команду ln -s A a Я получаю мертвую ссылку a / A

Есть ли способ, который я могу выполнить, если связь существует, а затем завершает все, если существует оператор?

Если все, что вы ищете, является единственным условным тестом для одной команды, вам не нужен оператор 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 только в том случае, если mylink2dir существует. Вы можете использовать:

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

Или эквивалентно:

 test -d mydir && ln -s mydir mylink2dir 

Используйте опцию -n чтобы избежать создания каталога. Это перезапишет существующую символическую ссылку, но не создаст ссылку внутри каталога, на который указывает существующая символическая ссылка.

 ln -sn A a 

ln -n не POSIX, а существует в GNU coreutils, BusyBox и * BSD (включая OSX).