Bagaimana cara memaksa pembuatan tautan simbolik?

10

Saya memiliki direktori tertentu yang penuh dengan direktori lain yang dikelola (dinamai) berdasarkan tanggal. Untuk kemudahan referensi, saya memiliki symlink yang disebut currentmenunjuk ke yang terbaru.

Dalam skrip yang membuat direktori tanggal baru, saya ingin membuat atau memperbaiki currentsymlink untuk menunjuk ke direktori terbaru yang pernah dibuat.

Saya pikir perintah yang tepat adalah, misalnya,

ln -fs 2017-03-01 current

Jika currentsymlink belum ada, ini berfungsi.


Namun, jika currentsymlink telah dibuat (dan menunjuk, katakanlah, di direktori 2017-02-28), ini tidak berfungsi:

Alih-alih menghapus symlink currentdan membuat symlink baru currentyang mengarah ke 2017-03-01, hasilnya malah akan menjadi symlink rusak yang disebut 2017-03-01 menunjuk ke dirinya sendiri, terletak di dalam direktori 2017-02-28(yang merupakan tempat symlink currentmenunjuk dan masih menunjuk).

Ini membingungkan saya, jadi saya membaca spesifikasi untukln . Ternyata inilah perilaku yang diharapkan:

RINGKASAN

ln [-fs] [-L|-P] source_file target_file

ln [-fs] [-L|-P] source_file... target_dir

DESKRIPSI

...

Bentuk sinopsis kedua harus diasumsikan ketika operan terakhir menamai direktori yang ada.


Jadi, tampaknya tidak ada cara apa pun untuk mengulangi symlink yang saat ini menunjuk ke direktori ke target baru, di mana target baru memiliki nama yang berbeda dari nama symlink. Jadi ln -fstidak berfungsi seperti yang saya kira.

Haruskah saya rm current, atau ada pendekatan lain yang saya abaikan?

Wildcard
sumber

Jawaban: