Sua melhor aposta é excluir ~/pgsql_tmp
e deixar o comando ln criá-lo.
Primeiro, observe que o LN não vincula dois objetos; cria um link para um destino com um nome específico de um lugar.
ln [OPTION]... [-T] TARGET LINK_NAME
Quando você cria um link com ln
, o argumento NAME deve indicar um objeto que ainda não existe e será criado como resultado do comando. No seu caso, você já criou ( ~/pgsql_tmp
) como um diretório.
Normalmente, você pode usar a opção -f
para forçar a exclusão de qualquer coisa que já sobreponha o caminho do NAME, mas no seu caso você especificou -T
, o que significa que você deseja criar o link como um Arquivo, não como um Diretório . Então, quando -f
vai sobrescrever o objeto em NAME, ele está tentando sobrescrever um diretório com um arquivo.
Assim, você pode criar o link como um diretório e usar -f, ou você pode excluir o objeto que se sobrepõe a NAME e, em seguida, criar seu link. O último é a melhor opção.
#create a test target with a file, but without an object at lnname
~/tmp$ mkdir lntarget
~/tmp$ touch lntarget/contentfile1
~/tmp$ ln -sTf lntarget lnname
~/tmp$ ls ./lnname
contentfile1