Existe uma maneira de não criar um link sym se a pasta existir?

2

Eu tenho algo parecido com

pasta A e quando eu faço ln -s A a cria a pasta ligada ao sym agora se eu repetir o comando ln -s A a eu recebo o link morto a / A

Existe uma maneira que eu posso ter ln se o link existe outro, em seguida, envolvendo tudo se existe instruções?

    
por Prospero 20.04.2016 / 04:49

2 respostas

1

Se tudo o que você está procurando é um único teste condicional para um único comando, você não precisa de uma instrução if - basta usar uma lista .

De acordo com 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.

Digamos que a pasta que você espera estar lá seja mydir e você queira criar um link mylink2dir apenas se a pasta existir. Você poderia usar:

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

Ou de forma equivalente:

test -d mydir && ln -s mydir mylink2dir
    
por 20.04.2016 / 05:09
1

Use a opção -n para evitar a criação de um diretório. Isso sobrescreverá um link simbólico existente, mas não criará um link dentro de um diretório apontado por um link simbólico existente.

ln -sn A a

ln -n não é POSIX, mas existe em GNU coreutils, BusyBox e * BSD (incluindo OSX).

    
por 21.04.2016 / 01:02

Tags