Crie link físico se possível, caso contrário use o symlink

1

Eu estou tentando escrever um script de shell para criar um link para o arquivo do meu dotfiles repo para minha pasta pessoal.

Eu quero usar o hard link, se possível, porque ele não pode ser quebrado ao movê-lo para algum lugar no mesmo sistema de arquivos com HOME .

Mas se eu clonar o dotfiles para outro sistema de arquivos, eu tenho que usar o symlink.

Então, como criar link físico para arquivo, se possível, senão usar symlink no shell script?

    
por mja 23.03.2018 / 18:17

1 resposta

4
ln source target 2>/dev/null || ln -s source target 2>/dev/null || exit 1

ou, um pouco mais "interativamente" (chattier),

if ! ln source target 2>/dev/null; then
    echo 'failed to create hard link, trying symbolic link instead' >&2
    if ! ln -s source target 2>/dev/null; then
        echo 'that failed too, bailing out' >&2
        exit 1
    fi
fi

Remova os redirecionamentos para /dev/null para ver as mensagens de erro exibidas por ln (se houver).

    
por 23.03.2018 / 18:35