Masalah pertama:
Mengutip Anda:
Kreasi dan penghapusan berfungsi dengan baik. Tetapi pembaruan tidak berfungsi. Setelah melakukan perintah ini, symlink menjadi tidak valid.
Masalah dengan struktur direktori yang diberikan:
~ / skrip / test / ~ / skrip / test / remote_loc / ~ / skrip / test / remote_loc / site1 / ~ / skrip / tes / remote_loc / site1 / stuff1.txt ~ / skrip / test / remote_loc / site2 / ~ / script /test/remote_loc/site2/stuff2.txt ~ / scripts / test / remote_loc / site2 / ~ / scripts / test / remote_loc / site3 / stuff3.txt
dan menggunakan perintah:
ln -s /remote_loc/site1 test_link
Apakah itu menciptakan tautan simbolis di $ PWD Anda, atau direktori kerja saat ini, yang menunjuk ke file yang tidak ada dari /, atau root, di / remote_loc / site1
Jika PWD Anda ada di ~ / skrip / maka Anda harus menggunakan ini:
ln -s remote_loc/site1 test_link
kalau tidak Anda bisa menggunakan path absolut penuh seperti:
ln -s /home/yourusername/remote_loc/site1 test_link
Masalah kedua:
Mengutip Anda:
Saya telah membaca di sana-sini bahwa tidak mungkin untuk memperbarui / mengganti symlink. Jadi ada informasi yang saling bertentangan di internet. Siapa yang benar? Jika symlink dapat diperbarui / diganti, bagaimana saya bisa mencapai ini?
Untuk menjawab pertanyaan Anda "Siapa yang benar", saya tidak yakin apa yang sebenarnya Anda baca, atau bagaimana itu dipahami. Tapi, yang berikut ini akan membantu menjernihkan:
- Apa yang bisa diperbarui, dan
- Apa yang tidak bisa diperbarui tanpa menggunakan switch yang sesuai.
Memperbarui tautan simbolis dengan target yang bukan direktori.
ln -sf:
The -f atau - memaksa menghapus file tujuan yang ada, Ini digunakan untuk memperbarui target atau tujuan tautan.
Contoh:
ln -sf /tmp/test /tmp/test.link; ls -go /tmp |grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 9 Jun 8 17:27 test.link -> /tmp/test
Tapi, seperti yang Anda lihat, itu akan memberikan jalur absolut jika jalur absolut dalam ln
argumen. Memberikan path lengkap diperlukan ketika direktori kerja saat ini berbeda dari direktori induk tautan.
Jalur Relatif:
ln -sfr:
-r atau --relative membuat tautan simbolik relatif terhadap lokasi tautan.
Contoh:
ln -sfr /tmp/test /tmp/test.link ; ls -go /tmp| grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 4 Jun 8 17:27 test.link -> test
Namun, memperbarui tautan ke direktori tidak akan berfungsi jika targetnya adalah direktori.
Contoh:
ln -sf /tmp/testdir /tmp/testdir.link ; ls -go /tmp |grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:47 testdir.link -> testdir
Seperti yang Anda lihat, meskipun menggunakan nama path absolut yang diberikan dalam ln
argumen di atas tanpa opsi -r, tautan simbolik masih relatif terhadap tautan.
Perbarui Tautan ke Direktori:
ln -sfrn:
The -n atau --no-dereference memperlakukan LINK_NAME sebagai file normal jika itu adalah tautan simbolis ke direktori.
Contoh:
ln -sfn /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 12 Jun 8 17:48 testdir.link -> /tmp/testdir
Berbeda dengan:
ln -sfnr /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:48 testdir.link -> testdir
unlink
bukanrm
. Denganunlink
Anda tidak pernah berisiko kehilangan file dalam direktori sumber dengan secara tidak sengaja menggunakan sakelar yang salah.