ln
é a seguinte:
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
Sem -T
, se LINK_NAME
já existir e for um diretório (ou um link simbólico verificado para, eventualmente, resolver um diretório), o primeiro e terceiro formulários são ambíguos e ln
escolhe o terceiro formulário: cria o link dentro do diretório. Assim
ln -s ~/www/project /var/www/html/project
criará um link chamado project
dentro de /var/www/html/project
se este já existir.
-T
remove a ambigüidade e força ln
a considerar apenas o primeiro formulário: se o link não existir, o link será criado como nomeado; se já houver um arquivo ou diretório com o dado LINK_NAME
, ln
falhará com um erro (a menos que -f
seja especificado também).
Então
ln -sT ~/www/project /var/www/html/project
garante que você termine com um link /var/www/html/project
apontando para ~/www/project
ou com uma mensagem de erro (e um código de saída diferente de zero).