Este é o objetivo da opção ln
-f
: ela remove os arquivos de destino existentes, se houver, antes de criar o link.
ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
criará o link simbólico /path/to/recent/file
apontando para /path/to/data/folder/month/date/hour/minute/file
, substituindo qualquer arquivo existente ou link simbólico para um arquivo, se necessário (e funcionando bem se já não existir nada).
Se um diretório, ou um link simbólico para um diretório, já existir com o nome do alvo, o link simbólico será criado dentro dele (assim você vai acabar com /path/to/recent/file/file
no exemplo acima). A opção -n
, disponível em algumas versões do ln
, cuidará dos links simbólicos para os diretórios, substituindo-os conforme necessário:
ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
POSIX ln
não especifica -n
, então você não pode confiar em geral. Muito do comportamento de ln
é definido pela implementação, por isso você realmente precisa verificar os detalhes do sistema que está usando. Se você estiver usando GNU ln
, você pode usar o -t
e -T
opções também, para tornar seu comportamento totalmente previsível na presença de diretórios ( ie falha ao invés de criar o link dentro do diretório existente com o mesmo nome).