Saya ingin mencatat data /path/to/data/folder/month/date/hour/minute/file
dan menghubungkannya dengan /path/to/recent/file
dan melakukan ini secara otomatis setiap kali file dibuat.
Dengan asumsi saya tidak akan tahu sebelumnya jika /path/to/recent/file
ada, bagaimana saya bisa membuatnya (jika tidak ada) atau menggantinya (jika memang ada)? Saya yakin saya bisa memeriksa apakah ada dan kemudian melakukan delete, symlink, tapi saya bertanya-tanya apakah ada perintah sederhana yang akan melakukan apa yang saya inginkan dalam satu langkah.
Jawaban:
Silakan baca manualnya .
sumber
/path/to/symlink
sudah merupakan symlink ke direktori, tanpa-n
flag, Anda akan mendapatkan symlink yang dibuat/path/to/symlink/target
alih-alih menggantikan/path/to/symlink
/path/to/symlink
ada dan merupakan direktori, dan tetapi bukan symlink. Saya pikir satu-satunya cara untuk mengatasinya adalah dengan berlarirm -rf
dulu.Ini adalah tujuan dari
ln
's-f
pilihan: menghilangkan file tujuan sudah ada, jika ada, sebelum membuat link.akan membuat symlink
/path/to/recent/file
menunjuk ke/path/to/data/folder/month/date/hour/minute/file
, mengganti file yang ada atau symlink ke file jika perlu (dan berfungsi dengan baik jika tidak ada yang sudah ada di sana).Jika direktori, atau symlink ke direktori, sudah ada dengan nama target, symlink akan dibuat di dalamnya (jadi Anda akan berakhir dengan
/path/to/recent/file/file
dalam contoh di atas). The-n
pilihan, tersedia dalam beberapa versiln
, akan mengurus symlink ke direktori untuk Anda, menggantikan mereka sebagai diperlukan:POSIX
ln
tidak menentukan-n
sehingga Anda tidak dapat mengandalkannya secara umum. Sebagian besarln
perilaku didefinisikan oleh implementasi sehingga Anda benar-benar perlu memeriksa spesifikasi sistem yang Anda gunakan. Jika Anda menggunakan GNUln
, Anda dapat menggunakan opsi-t
dan-T
juga, untuk membuat perilakunya sepenuhnya dapat diprediksi di hadapan direktori ( yaitu gagal daripada membuat tautan di dalam direktori yang ada dengan nama yang sama).sumber