Sembolik Bağlantı ile Kısayol arasındaki fark nedir?
Sembolik Bağlantı ile Kısayol arasındaki fark nedir?
Yanıtlar:
Bence asıl önemli olan kısayolların sadece bir dosya olduğudur. Bir boyuta sahipler (sadece işaret ettikleri yere referans veren küçük bir tane) ve bu filetipi desteklemek için bir uygulama gerektiriyorlar.
Sembolik bir bağlantı dosya sistemi seviyesidir ve her şey orijinal dosya olarak görür . Bir uygulamanın sembolik bir bağlantı kullanmak için özel bir desteğe ihtiyacı yoktur.
find
, tar
, du
, vs) do sembolik bağlantıları hakkında bilmeniz gereken ya da bazı çok aptalca şeyler yapabilir. Mesela sembolik bağları takip ederek dosya dosyalarında döngü oluşturabilir ve bu kötüdür .
Bir "Sembolik Bağlantı" aslında bir dizin veya dosyanın yerine işlevsel bir şekilde geçebilir ve genellikle Unix / Linux ortamlarında kullanılır. Windows'ta bunun için destek görünmekle birlikte, henüz gerçek bir kullanım görmedim.
Bir "Kısayol" sadece hedef dosyaya veya dizine atıfta bulunacak, görüntülenecek simge gibi bazı şeylerle ilgili normal bir dosyadır. Sembolik bir Bağlantıdan farklı olarak, DOS'ta "cd ./shortcut-name" yapamazsınız (Unix / Linux'ta "cd ./symlink-name" yazabilirsiniz ve tıpkı gerçek bir alt dizin gibi çalışacaktır).
Ayrıca, çoğu Windows uygulamasında, herhangi bir Dosya-> GUI Aç diyalog penceresindeki bir Kısayola tıkladığınızda, dosya adı alanınız o kısayolun dosya adıyla aynı alt dizin gibi davranırken, Unix / Linux'ta GUI davranır. yol olarak Sembolik Bağlantı (dosya adı alanını değiştirmeden).
Diğerlerinin de belirttiği gibi, sembolik bir bağlantı, dosya sistemi düzeyinde mevcut olan bağlantı türlerinden biridir ve bu da onu uygulamalar için şeffaf kılar. Bu belgeyi çok yararlı buldum (özellikle "Kırpma / Kaydırma / Ekleme Dış Bağlantıları / Sembolik Bağlantılar" bölümü). Ve oradaki araç da hoş görünüyor. (Bunu ve mklink, bunu söyleyerek umarım daha fazla arama bu tartışma bulacaksınız.)
Kısayol, gerçek bir bağlantı değil bir dosyadır ve genellikle Windows UI (kullanıcı arabirimi) tarafından yorumlandığında yalnızca bağlantı olarak başarıyla izlenir. Örneğin, bir klasör kısayoluna çift tıkladığınızda, Windows sizi bu başka bir konuma yönlendirir. (Bu, çoğu uygulamanın çağırdığı genel Dosya Aç ve Dosya Kaydet iletişim kutularını içerir.) Masaüstümde bu klasöre bir kısayol var: C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ G
Kısayolun dosya adı: C: \ Users \ kullanıcı5 \ Desktop \ Games.lnk, ancak Windows .lnk uzantısını bastırıyor ve "Bilinen dosya türleri için uzantıları gizle" seçeneğinin işaretini kaldırsanız bile, "Oyunlar" gösteriliyor. Ancak bir komut istemi açar ve bir dir yaparsanız, göreceksiniz:
C:\Users\user5\Desktop>dir "g*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/08/2014 05:30 PM 1,710 Games.lnk
1 File(s) 1,710 bytes
0 Dir(s) 246,818,222,080 bytes free
\ D seçeneğini (dizin için) kullanarak bir sembolik bağlantı ile eşdeğerini oluşturabilirim:
C:\Users\user5\Desktop>mklink /D mysymlink "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G
C:\Users\user5\Desktop>cd mysymlink
C:\Users\user5\Desktop\mysymlink>
(Bir dizin bağlantısı (\ J) da bir seçenektir, çünkü bu bir klasör bağlantısıdır.) Windows explorer, tıpkı bu konsol ve çoğu uygulama gibi, (a) yönlendirmek yerine bu görünen alt dizine "aşağı" göz atmanıza izin verir farklı bir yere "arasında" veya (b) başarısız.
Kısayollar, alt dizinler gibi davranmaz. Windows UI'nin varsayılan dosya davranışını bu komutla çağırabilirim (bu, Windows Gezgini'nde "G" klasörünü açar):
C:\Users\user5\Desktop>"Games.lnk"
Bununla birlikte, mysymlink gerçek bir alt dizin olarak listelenir (sayıya bakınız) ve bu şekilde başlatılamaz:
C:\Users\user5\Desktop>dir "my*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/29/2014 06:08 PM <DIR> mysubdir
03/29/2014 05:40 PM <SYMLINKD> mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
0 File(s) 0 bytes
2 Dir(s) 246,816,153,600 bytes free
C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.
Tersine, dizini kısayol haline getiremezsiniz:
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
Windows UI, bir kısayolun özelliklerini düzenlemek için sağ tıklamanızı sağlar. Veya, bir hex editörü daha iyi görüntülense de, aşağıdakiler tam olarak .lnk dosyasında neyin saklandığını gösterir (ikili veri).
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
Gerçek bir alt klasörde Not Defteri çalıştırmaya çalışırken "Erişim reddedildi" hata mesajı ve boş bir Not Defteri belirir.
Tersine, eğer bir dosya linkini yaparsam (bir klasör linkini değil), Notepad ile başlatabilirim. Aşağıdaki notepad.exe çağrıları, ilk iki iş ve üçüncü başarısız olur (.LNK dosyasını açar, ikili gobbledegook).
C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt
C:\Users\user5\Desktop>notepad.exe "symplain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"
Bu sadece bir konsol olayı değil. Not Defteri'ne bir kısayolu masaüstüme kopyalamak ve her üçünü de üzerine sürükleyip bırakmakla aynı davranış sergiliyor. (Çünkü çift tıklamanın aksine, sürükle ve bırak uygulamanın kısayolu yorumlamasını sağlar.)
Dizin sembolik bağları ve kavşaklar arasındaki farklarla ilgili olarak, bu tartışmaya bakın ve işte size çok yararlı bir açıklama :
"Windows'un sembolik bağları ve dizin bağlantılarını çözme biçimindeki büyük fark, işlemlerin gerçekleştiği yerdir. Windows, uzak bir dosya sunucusundaki bir konuma başvursalar bile, yerel sistemdeki sembolik bağları işler. Windows, uzaktaki bir bilgisayara başvuran dizin bağlantılarını işler. Bu nedenle, sunucudaki sembolik bağlantılar, bir sunucudaki sembolik linkler, diğer müşterilerin hacimleri gibi, sadece bir müşterinin erişebileceği yerlere atıfta bulunabilir, oysaki dizin bağlantıları bulamaz. Bunu çözmek için, Windows Vista her iki dosya için yeni sembolik link türünü desteklemektedir. ve dizinler.
"Birçok dosya sistemi komutu, sembolik bağlantıların etkilerini anlamak için güncellendi. Örneğin, Sil komutu, hedeflerin silinmesine neden olacak bağlantıları izlememeyi, bunun yerine bağlantıyı silmeyi bilir. Ancak, tüm uygulamalar değil sembolik bağları doğru işleyebilir, sembolik bir bağ oluşturmak, yalnızca yöneticilerin varsayılan olarak sahip oldukları yeni Sembolik Bağlantı Oluşturma ayrıcalığını gerektirir. "
"Sembolik Bağlantılar, istenen veri nesnesine saydam * bir yol sunduğundan Kısayollardan farklıdır, kısayolla (.lnk), bir şey kısayol dosyasının içeriğini okumak ve yorumlamak ve sonra başvurduğu dosyayı açmak zorundadır (örn. bu iki aşamalı bir işlemdir.) Bir uygulama bir link link kullandığında, link link tarafından referans verilen veri nesnesine hemen erişir (yani tek adımlı bir işlemdir). ”
Kaynak: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
Bazen işlevsel bir örneğe sahip olmak iyidir, bu yüzden bu işlevi nasıl kullandığımı açıklayacağım.
Dosyaları yedeklemek için google sürücüyü kullanıyorum, ancak bazen dosyaları belirli bir klasörde yedeklemek istiyorum (bunları ../google sürücüsüne taşıyamıyorum). Özellikle Windows 10 evrensel uygulamalarında, config dosyaları ve benzeri dosyalar appdata'da depolanır ve çoğu zaman bu konumu değiştiremem.
Windows native stikynot uygulamasını kullanıyorum ve notlarımı yedeklemek istedim, bu yüzden burada bir sembolik bağlantı kullandım. Google sürücüsü, bağlantıyı gerçek bir dosya olarak tanır ve gerçek dosya hala appdata klasöründeyken dosyaları iyi bir şekilde senkronize eder.
Yerelde proje klasörleri gibi dosyalara sahip olduğumda buluta eşitlemek istemediğim kısayolları kullanıyorum (kopyala, yapıştır> kısayol yapıştır).