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_dirDESCRIÇÃ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?