Kök oluşturmak için bir sembolik bağlantı nasıl oluşturulur


13

Giriş dizinimdeki root ( /) klasörüne bir sembolik bağlantı oluşturmak istiyorum . Ancak bunu denersem,

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

Bunu Nautilus Ctrl+ kullanarak yapabilirim D, tabii ki mümkün olduğunu biliyorum.

Terminali kullanarak nasıl yapılır?


Bu iyi bir soru olsa da, bunu neden yapmak isteyeceğinizin nedenini bilmek istiyorum? Yazmak çok mu zor cd /? Ya da bir döngü boyunca tekrar tekrar devam edecek bir bağlantı oluşturmak ister misiniz? Örnek: cd root/home/terrance/root/home/terrance/root/home/terrance/root. . . vs
Terrance

gerçekten değil. bunu kök bağlamaya gerek kalmadan yapabilirsin. aslında, neden yapamadığınızı merak ettim
Ankur S

Yeterince adil. Soruma cevap verdiğiniz için teşekkür ederim. =)
Terrance

Yanıtlar:


17

Bağlantının adını kaçırıyorsunuz, şöyle olmalıdır:

cd ~
ln -s / root

Daha sonra ana dizininizde root adlı bir sembolik bağlantı oluşturur. Yani doğru kullanım:

ln -s <target> <link-name>

Gördüğünüz hata mesajı, ./her zaman var olan ve bu adla bir bağlantı oluşturulamıyor, en iyisi, yanlış bağlantıyı önlemek için her iki parametreyle lnkomut 2'yi kullanmaktır .

Gönderen man ln:

ÖZET

(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...  

AÇIKLAMA

1. formda, TARGETadıyla bir bağlantı oluşturun LINK_NAME. 2. formda, TARGETgeçerli dizinde bir bağlantı oluşturun . 3. ve 4. formları, her bağlantılar oluşturmak TARGETin DIRECTORY. Varsayılan olarak sabit bağlantılar, simgesel bağlantılar oluşturun --symbolic. Varsayılan olarak, her hedef (yeni bağlantının adı) zaten mevcut olmamalıdır 4 . Sabit bağlantılar oluştururken, her biri var TARGETolmalıdır. Sembolik bağlantılar keyfi metin içerebilir; daha sonra çözümlenirse, göreli bir bağlantı üst dizinine göre yorumlanır.

Uzun seçenekler için zorunlu argümanlar kısa seçenekler için de zorunludur.

SEÇENEKLER

Son parametre, <link-name>varsayılan olarak hedefin son kısmıdır. Bu nedenle hedef, /path/dirbağlantı adı dirbelirtilmezse varsayılan olarak kullanılır . 1 Ve örneğin oluşturursanız ~/etcile mkdir ~/etcve daha sonra çalıştırın ln -s /etciçinde ~adı / dizin zaten var çünkü bağlantı oluşturamazsınız. 3

Ve ana dizininizde oluşturulan bağlantıyı görebilirsiniz (burada örnek olarak, elbette istediğinizi adlandırmaktan özgürsünüz):

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

1 @ işaret ettiğin için teşekkür ederiz .
2 Ayrıca bakınız man linkve man symlink
3 Yorumlara örnek verdiğiniz için @steeldriver'a teşekkürler .
4 Metnin soruyla alakalı olduğu için vurgulanması gereken bölüm.


geriye kalan tek şüphe neden böyle bir komutun ln -s /etciş gibi olmasın? Cevabınız için teşekkürler,
Ankur S

Bir dizin adı olduğundan, /kök olabileceğinden veya bir yol bileşeni olabileceğinden, programın şimdi ne anlama geldiğini bilememesi nedeniyle oluşturulur. /etcsadece açık ve ayırt edilebilir bir yoldur.
Videonauth

7
@AnkurSonawane çünkü ./her zaman var olacak - ./etcpek olası değil. mkdir etcÖnce deneyin ve sonra ln -s /etc- ayrıca alacaksınızFile exists
steeldriver

8
Son parametre olan bağlantı adı varsayılan olarak atlanırsa hedefin son kısmı olur. Bu nedenle hedef, /some/dirbağlantı adı dirbelirtilmezse varsayılan olarak kullanılır . /Ancak hedef adil olduğunda, bu işe yaramayacaktır.
thomasrutter

Bu son derece önemli olduğunu düşünmüyorum, ancak @steeldriver'ın açıklaması File Existsçıktı göz önüne alındığında daha makul geliyor . Bu dejenere durumda olduğu için önemli değil
Ankur S
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.