Como forçar a criação de um link simbólico?

10

Eu tenho um diretório específico cheio de outros diretórios organizados (nomeados) por data. Para facilitar a referência, tenho um link simbólico chamado currentapontando para o mais recente.

No script que cria novos diretórios de data, desejo criar ou corrigir o currentlink simbólico para apontar para o diretório mais novo depois de criado.

Eu pensei que o comando apropriado seria apenas, por exemplo,

ln -fs 2017-03-01 current

Se o currentlink simbólico ainda não existir, isso funcionará.


No entanto, se o currentlink simbólico já foi criado (e aponta, digamos, no diretório 2017-02-28), isso não funciona:

Em vez de remover o link simbólico currente criando uma nova ligação simbólica currentque aponta para 2017-03-01o resultado, ao contrário, ser uma ligação simbólica quebrada chamada 2017-03-01 apontando para si mesmo, descansando dentro do diretório 2017-02-28(que é onde o link simbólico currentapontou e ainda pontos).

Isso me deixou perplexo, então eu li as especificações paraln . Acontece que este é um comportamento esperado:

SINOPSE

ln [-fs] [-L|-P] source_file target_file

ln [-fs] [-L|-P] source_file... target_dir

DESCRIÇÃO

...

O segundo formulário de sinopse deve ser assumido quando o operando final nomear um diretório existente.


Parece, então, que não há como nomear um link simbólico que atualmente aponta para um diretório para um novo destino, onde o novo destino tem um nome diferente do nome do link simbólico. Portanto ln -fs, não funciona da maneira que eu pensava.

Must I rm current, ou há uma outra abordagem que eu tenha esquecido?

Curinga
fonte

Respostas: