Cara membuat symlink ke root

13

Saya ingin membuat symlink ke /folder root ( ) di direktori home saya. Namun jika saya mencoba ini, saya mengerti

~$ ln -s /
ln: failed to create symbolic link './': File exists

Saya bisa melakukan ini menggunakan Nautilus Ctrl+ D, tentu saja, jadi saya tahu itu mungkin.

Bagaimana cara menggunakan terminal?

Ankur S
sumber
Meskipun ini adalah pertanyaan yang bagus, saya ingin tahu alasan mengapa Anda ingin melakukan ini? Apakah terlalu sulit untuk mengetik cd /? Atau apakah Anda suka membuat tautan yang akan terus berulang berulang? Contoh: cd root/home/terrance/root/home/terrance/root/home/terrance/root. . . dll.
Terrance
tidak juga. Anda bisa melakukan ini tanpa perlu menautkan ke root. sebenarnya, saya hanya ingin tahu mengapa Anda tidak bisa melakukannya
Ankur S
Cukup adil. Terima kasih telah menjawab pertanyaan saya. =)
Terrance

Jawaban:

17

Anda kehilangan nama tautannya, seharusnya:

cd ~
ln -s / root

Yang kemudian akan membuat symlink disebut root di direktori home Anda. Jadi penggunaan yang benar adalah:

ln -s <target> <link-name>

Pesan kesalahan yang Anda lihat adalah, yang ./selalu ada dan tautan tidak dapat dibuat dengan nama ini, yang terbaik adalah dengan menggunakan lnperintah 2 dengan kedua parameter untuk mencegah tautan yang salah.

Dari man ln:

RINGKASAN

(1st form) ln [OPTION]... [-T] TARGET LINK_NAME  
(2nd form) ln [OPTION]... TARGET  
(3rd form) ln [OPTION]... TARGET... DIRECTORY  
(4th form) ln [OPTION]... -t DIRECTORY TARGET...  

DESKRIPSI

Di formulir 1, buat tautan ke TARGETdengan nama LINK_NAME. Dalam formulir ke-2, buat tautan ke TARGETdalam direktori saat ini. Di formulir 3 dan 4, buat tautan ke masing-masing TARGETdi DIRECTORY. Buat tautan keras secara default, dengan tautan simbolik --symbolic. Secara default, setiap tujuan (nama tautan baru) seharusnya belum ada 4 . Saat membuat tautan keras, masing TARGET- masing harus ada. Tautan simbolik dapat menampung teks sewenang-wenang; jika nanti diselesaikan, tautan relatif ditafsirkan terkait dengan direktori induknya.

Argumen wajib untuk opsi lama juga wajib untuk opsi pendek.

PILIHAN

Parameter terakhir <link-name>,, default ke bagian terakhir dari target. Jadi ketika targetnya adalah /path/dirnama tautan akan default dirjika tidak ditentukan. 1 Dan jika Anda misalnya membuat ~/etcdengan mkdir ~/etcdan kemudian jalankan ln -s /etcdi ~tidak dapat membuat link karena nama / direktori sudah ada. 3

Dan Anda dapat melihat tautan yang dibuat di direktori home Anda (di sini sebagai contoh, tentu saja Anda bebas memberi nama apa pun yang Anda suka):

$ ls -l ~/root
lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

1 Terima kasih kepada @thomasrutter karena menunjukkannya.
2 Lihat juga man linkdan man symlink
3 Terima kasih kepada @steeldriver karena memberikan contoh dalam komentar.
4 Tekankan bagian untuk menunjukkan teks karena ini relevan dengan pertanyaan.

Videonauth
sumber
Satu-satunya keraguan saya yang tersisa adalah mengapa perintah seperti itu ln -s /etcberfungsi tetapi tidak yang ini? Terima kasih atas jawabannya,
Ankur S
Itu dibuat karena memiliki nama direktori, /bisa di-root atau bisa menjadi komponen path sehingga program tidak bisa tahu apa yang dimaksud sekarang. /etchanyalah jalur yang dapat dibedakan secara eksplisit.
Videonauth
7
@AnkurSonawane karena ./akan selalu ada - ./etctidak begitu mungkin. Coba mkdir etcdulu, dan kemudian ln -s /etc- Anda juga akan mendapatkanFile exists
steeldriver
8
Parameter terakhir, nama tautan, default ke bagian terakhir dari target jika dihilangkan. Jadi ketika targetnya adalah /some/dirnama tautan akan default dirjika tidak ditentukan. Namun, ketika targetnya adil /, ini tidak akan berhasil.
thomasrutter
Saya tidak merasa bahwa ini sangat signifikan tetapi penjelasan @steeldriver terdengar lebih masuk akal mengingat File Existshasilnya. Toh itu tidak penting karena ini adalah kasus yang merosot
Ankur S