Dizine bir symlink oluşturacak bir kabuk komut dosyasına bir komut koymak istiyorum, ancak bu komut dosyası tekrar tekrar çalıştırılabilir, bu nedenle sonraki çağrılarda, komut hiçbir şey değişmemelidir.
Dizin yapısı şöyledir:
% tree /tmp/test_symlink
/tmp/test_symlink
├── foo
└── repo
└── resources
└── snippets
├── php.snippets
├── sh.snippets
├── snippets.snippets
├── sql.snippets
└── vim.snippets
foo/
Dizine işaret eden snippet'lerde bir sembolik bağlantı oluşturmak istiyorum /tmp/test_symlink/repo/resources/snippets
.
Bu yüzden koşuyorum:
% ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets
'/tmp/test_symlink/foo/snippets' -> '/tmp/test_symlink/repo/resources/snippets'
istenen sonucu verir.
% 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 dizin, 5 dosya
Ancak, komut yeniden çalıştırıldığında,
% 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'
bir dizine bir sembolik bağlantı oluşturur, burada symlink'in mevcut olduğu symlink'i gerçek dizinin içine koyar
% 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
bu neden oluyor ve daha sonraki çağrıların bu garip etkiyi yaratmaması için komutu nasıl değiştirebilirim?
-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
Symlink'i her zaman bir dosya olarak ele almanın daha iyi olduğunu düşünüyor musunuz? Bu "özel" seçeneklerin kullanımını sınırlamanın daha iyi olacağını düşünürdüm?