Saya mencoba membuat tautan simbolis di direktori home saya yang mengarah ke direktori pada HDD eksternal saya.
Ini berfungsi dengan baik ketika saya menentukannya seperti ini:
cd ~
ln -s /run/media/name/exhdd/Data/ Data
Namun itu menciptakan tautan yang salah ketika saya mencoba ini:
cd /run/media/name/exhdd
ln -s Data/ ~/Data
Ini menciptakan tautan yang tidak bisa saya cd
masuki.
Ketika saya mencoba, bash mengeluh:
bash: cd: Data: Too many levels of symbolic links
Tautan simbolis data di rumah saya juga berwarna merah ketika ls
diatur untuk menampilkan keluaran berwarna.
Mengapa ini terjadi? Bagaimana saya bisa membuat tautan dengan cara itu? (Saya ingin membuat symlink ke direktori di direktori kerja saya di direktori lain.)
Sunting: sesuai dengan jawaban StackOverflow ini , jika argumen kedua (dalam kasus saya yang akan ~ / Data) sudah ada dan merupakan direktori,
ln
akan membuat symlink ke target di dalam direktori itu.
Namun, saya mengalami masalah yang sama dengan:
ln -s Data/ ~/
cd ~
biasanya sama dengancd
.ls -l ~/Data
akan membantu Anda melihat apa yang salah dengan tautan "merah".cat
, tapi saya lupa apa hasilnya ... (Saya tidak ada di rumah saat ini.)/run/media/name/exhdd/Data/
untukData
kemudian menggunakan yang berikutln -s /run/media/name/exhdd/Data/* Data
Jawaban:
Inilah yang terjadi. Jika Anda membuat symlink dengan jalur relatif, symlink akan relatif. Symlinks hanya menyimpan jalur yang Anda berikan kepada mereka. Mereka tidak pernah menyelesaikan jalur ke jalur penuh. Lari
membuat symlink bernama
ls2
in/usr/bin
tols
(viz./usr/bin/ls
) relatif terhadap direktori tempat symlink berada di (/usr/bin
). Perintah di atas akan membuat symlink fungsional dari direktori mana pun.Jika Anda memindahkan symlink ke direktori lain, itu akan berhenti menunjuk ke file di
/usr/bin/ls
.Anda membuat symlink yang menunjuk
Data
, dan menamainyaData
. Itu menunjuk pada dirinya sendiri. Anda harus membuat symlink dengan jalur absolut direktori.sumber
Saya mengalami masalah yang sama. Google mengarah ke jawaban ini tetapi solusi paling sederhana tidak didokumentasikan di sini:
-I melakukan trik
man ln:
Hanya menambahkan ini di sini sehingga siapa pun dengan pertanyaan yang sama dapat menemukan ini :)
sumber
ln
Perilaku dengan jalur relatif tidak intuitif. Untuk mengembalikan kewarasan, menggunakan-r
bendera.Penjelasan:
Apa artinya itu
ln
akan melakukan apa yang Anda harapkan. Ini akan mempertimbangkan direktori tempat Anda berada, direktori mana targetnya berada, dan membangun jalur relatif ke direktori yang akan-r
dituju . Perilaku default (tanpa ) adalah menafsirkan parameter pertama (target) secara harfiah , di Jika demikian, Anda harus membuat jalur sendiri sehingga valid di direktori tautan.Atau, gunakan jalur absolut, seperti yang disebutkan oleh @SmithJohn
atau
sumber
Sederhananya Anda dapat membuat tautan untuk folder. Lihatlah perintah saya
ln -s / home / targatedfolder / var / www / html / link_name
sumber