Terminal'de sembolik bir bağlantı nasıl oluşturabilirim?


Yanıtlar:


542
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Ln (1) hakkında daha fazla bilgi için man sayfasına bakın .

Sembol bağlantısına giden yol isteğe bağlıdır; atlanmış ise, lngeçerli dizinde, hedef olarak aynı isimde bir bağlantı yapmadan varsayılan:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Bir sistem dizini değiştirmek için bir sembolik bağlantı oluşturmak için (örneğin /Users, başka bir disk sürücüsüne işaret etmek istiyorsanız ), Sistem Bütünlüğü Korumasını devre dışı bırakmanız gerekir . Sembolik bağlantı kurulduktan sonra tekrar etkinleştirebilirsiniz.


63
Keşke sadece erkek sayfaları cevabın kadar açık olsaydı!
Adrian Lynch,

izin verilmedi: S bana bir ipucu verebilir misiniz? Kullanıcılar için sembolik bağlantı oluşturmaya çalışıyorum, böylece diğer sabit diskte kullanabiliyorum ve ssd ise sadece sembolik bağlantıya sahip. teşekkürler
Ewoks

2
@ patrix Açıklığa kavuşturmak için cevabımı düzenledim; daha fazla düzenlemek için çekinmeyin.
grg

4
Eğlenceli gerçek: orijinalin var olmasına gerek yok. Komut ln -s "This directory is no longer in use" READMEtamamen meşru olacak ve daha sonra yürüten herkes ls -lmesajı görecekti.
Edward Falk

1
Gelecekte başvurmak için: Yer kazanmak için / Kullanıcıları macOS'ta taşımak zorunda değilsiniz. Kullanıcı listesi girişlerini sağ tıklatarak, kullanıcıların giriş dizini yollarını Kullanıcılar ve Gruplar altındaki Sistem Tercihlerinde değiştirebilirsiniz.
Peter W.

73

Komuta denir ln. Bu seçenekle birlikte kullanılırsa -s, geçerli dizinde sembolik bir bağlantı oluşturur:

ln -s /any/file/on/the/disk linked-file

1
Bağlantılı dosya önce var olmak zorunda mı? Hedefte hata bulunamayan bir dosya alıyorum.
AlxVallejo

2
Dosya değil (varsa hata mesajı alırsınız), ancak herhangi bir yoldaki tüm dizinler. Sıkışmışsanız, sağ üstteki Soru Sor düğmesini kullanarak yeni bir soru sormaktan çekinmeyin. Bağlam sağlamak için bu soruya bir link ekleyin.
nohillside

Bu komutu çalıştırmadan önce sembolik bağ bulunmamalıdır. Ancak bildiğim kadarıyla geçerli bir yol gerekiyor. Bu komutu çalıştırmadan önce çıktı dosyasının klasörü yoksa, No such file or directoryaynı zamanda hata ile karşılaşırsınız.
Deniz Kaplan

34

Bu sorunun açıkça Terminal'i sorduğunu biliyorum, ancak GUI Land'daysanız ve Terminal Land'e girmek istemiyorsanız, SymbolicLinker'ı kullanabilirsiniz . Bu, Finder'daki Servisler menünüzde "Sembolik Bağlantı Yap" seçeneğini koyar.

Yükseltilmiş "Make Make Symbolic Link" ile "Services" alt menüsünü gösteren bir klasör için içerik menüsü

Sembolik bir bağlantı için, "Sembolik Bağlantı Yap" seçeneğini vurgulanmış bir içerik menüsü


3
Bunun neden reddedildiğini bilmek isterdim, bundan böyle daha kaliteli cevaplar
alabiliyorum

10
Muhtemelen soru “Terminal'de nasıl sembolik bir link oluşturabilirim?” idi. Ama senden aşağı oy kullanmıyorum :)
vedrano

1
@EdwardFalk El Capitan'da bir dosyayı sürüklerken Command+ tuşunu basılı tutabilirim Option... cevabı daha sonra güncelleyecek
Ben Leggiero

1
@BenLeggiero Bu bir takma ad yapar.
Andy Stewart,

2
@BenLeggerio, Fark burada açıklanmıştır: apple.stackexchange.com/questions/2991/…
MiB


5

ln -s /some/dir/ ~/Desktop/dir

Aynı komutu kullanarak dizin için bir link de oluşturabilirsiniz.

ln -s "$(pwd)" ~/Desktop/dir

Bulunduğunuz dizine sembolik link oluşturmak için.


2
Basit .(nokta) pwd'yi verecektir. Hiçbir fantezi tartışmasına gerek yok :)
mylogon

@ mylogon hahaha bazen düşünmeyi severim. cevabımı basitleştirdi!
Gerald

@ Mylogon sadece .macOS üzerinde çalışmadığını fark ettim . Henüz Linux üzerinde denemedi. kullanarak kendini gösteren ./bu sonuçlandı foo -> ./foo.
Gerald

Yazdığınız tam komut nedir?
mylogon
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.