Voglio inserire un comando in uno script di shell che creerà un link simbolico alla directory, ma questo script potrebbe essere eseguito più volte, quindi nelle successive chiamate, il comando non dovrebbe cambiare nulla.
Ecco la struttura delle directory:
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
Voglio creare un collegamento simbolico nei foo/
frammenti chiamati che punta alla directory /tmp/test_symlink/repo/resources/snippets
.
Quindi corro:
% ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets
'/tmp/test_symlink/foo/snippets' -> '/tmp/test_symlink/repo/resources/snippets'
che dà il risultato desiderato.
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
│ └── snippets -> /tmp/test_symlink/repo/resources/snippets
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
5 directory, 5 file
Tuttavia, quando il comando viene eseguito di nuovo,
% ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets
'/tmp/test_symlink/foo/snippets/snippets' -> '/tmp/test_symlink/repo/resources/snippets'
crea un collegamento simbolico a una directory, dove esiste già il collegamento simbolico, inserisce il collegamento simbolico nella directory reale
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
│ └── snippets -> /tmp/test_symlink/repo/resources/snippets
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets -> /tmp/test_symlink/repo/resources/snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
perché sta succedendo e come posso modificare il comando in modo che le successive chiamate non creino questo strano effetto?
-n, --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a directory
.-T, --no-target-directory treat LINK_NAME as a normal file always
pensi che sia meglio trattare sempre un symlink come un file? Avrei pensato che sarebbe meglio limitare l'uso di queste opzioni "speciali"?