Symlink para um link simbólico existente cria outro symlink no diretório atual

0

Quando eu tenho um link simbólico para uma pasta e, em seguida, tento novamente com a opção -sf , acabo tendo outro symlink dentro da pasta de origem original, que é symlinking para si mesmo. Por que isso está acontecendo e como garantir que links simbólicos duplicados não sejam criados?

➜  foo pwd
/home/ubuntu/foo
➜  foo ln -sf ~/foo/bar ~/foo/baz
➜  foo tree
.
├── bar
│   └── test.sh
└── baz -> /home/ubuntu/foo/bar

2 directories, 1 file
➜  foo ln -sf ~/foo/bar ~/foo/baz
➜  foo tree
.
├── bar
│   ├── bar -> /home/ubuntu/foo/bar
│   └── test.sh
└── baz -> /home/ubuntu/foo/bar

3 directories, 1 file

Distro : Ubuntu 14.04.5 LTS (GNU / Linux 3.13.0-106-genérico x86_64
shell : zsh com o meu plugin zsh

    
por Wordzilla 18.05.2017 / 12:40

2 respostas

2

Eu fiz mais alguns googling e me aponta para usar o parâmetro -n como em esta postagem do blog .

Entrada de página de manual relevante:

-n, --no-dereference
      treat LINK_NAME as a normal file if it is a symbolic link to a directory

Respostas relevantes de outras comunidades com melhores explicações:

link
link

    
por Wordzilla 18.05.2017 / 12:44
1

A resposta que você precisa é, não use -f se você não quiser realmente sobrescrever algo que já existe.

Sem esse parâmetro, você receberia uma mensagem informando:

ln: failed to create symbolic link 'your/link': File exists

O -n é, em nenhum caso, eu poderia pensar em necessário, a menos que você queira criar um link com o mesmo nome dentro do diretório apontado pelo link.

    
por Ziazis 18.05.2017 / 13:10