Link simbólico não sobrescreve pasta existente?

O link simbólico não sobrescreve (-f) se houver no destino uma pasta?

ln não é capaz de diferenciar dir de dir/ como alguns outros comandos (rsync, etc), por esse motivo acredito que originalmente, para evitar comportamentos destrutivos silenciosos, até mesmo -f não toma a atitude de sobrescrever diretórios, criando o link dentro. O manual não explicita esse comportamento, mas:

Given one or two arguments, ln creates a link to an existing file source_file. If target_file is given, the link has that name; target_file may also be a directory in which to place the link; otherwise it is placed in the current directory. If only the directory is specified, the link will be made to the last component of source_file.

O mesmo vale para links já existentes, o comando de-referencia o link, é preciso usar o argumento -n|--no-dereference junto.

Algumas versões suportam -F, mas segundo o manual:

The -F option is a FreeBSD extension and should not be used in portable scripts.

4 curtidas