Symbolic Link และ Shortcut แตกต่างกันอย่างไร?
Symbolic Link และ Shortcut แตกต่างกันอย่างไร?
คำตอบ:
ฉันคิดว่าจุดสำคัญคือทางลัดเป็นเพียงไฟล์ พวกเขามีขนาด (ขนาดเล็กที่เพียงแค่อ้างอิงที่พวกเขาชี้) และพวกเขาต้องการแอปพลิเคชันเพื่อสนับสนุนประเภทไฟล์นั้นเพื่อที่จะใช้
ลิงก์สัญลักษณ์คือระดับระบบไฟล์และทุกอย่างจะเห็น เช่น ไฟล์ต้นฉบับ แอปพลิเคชันไม่ต้องการการสนับสนุนพิเศษเพื่อใช้ลิงก์สัญลักษณ์
find
, tar
, du
ฯลฯ ) ทำ จำเป็นต้องรู้เกี่ยวกับลิงก์สัญลักษณ์หรืออาจทำสิ่งที่โง่มาก ตัวอย่างเช่นการทำให้ไม่เห็นลิงก์สัญลักษณ์ต่อไปนี้สามารถสร้างรอบในระบบไฟล์และนั่นคือ ไม่ดี .
"Symbolic Link" สามารถทำหน้าที่แทนไดเร็กตอรี่หรือไฟล์ในแบบที่ใช้งานได้และมักใช้ในสภาพแวดล้อม Unix / Linux แม้ว่าจะมีการสนับสนุนใน Windows แต่ฉันยังไม่เห็นการใช้งานจริง
"ทางลัด" เป็นเพียงไฟล์ปกติที่มีการอ้างอิงไปยังไฟล์ปลายทางหรือไดเรกทอรีพร้อมกับสิ่งอื่น ๆ เช่นไอคอนที่จะแสดง ไม่เหมือนกับ Symbolic Link คุณไม่สามารถ "cd ./shortcut-name" ใน DOS (ใน Unix / Linux คุณสามารถ "cd ./symlink-name" และมันจะทำงานเหมือนกับไดเรกทอรีย่อยจริง)
นอกจากนี้ในแอปพลิเคชัน Windows ส่วนใหญ่เมื่อคุณคลิกที่ทางลัดในกล่องโต้ตอบ File- & gt; Open GUI ช่องชื่อไฟล์ของคุณจะถูกเติมด้วยชื่อไฟล์ของทางลัดนั้นและทำหน้าที่เหมือนไดเรกทอรีย่อยในขณะที่ Unix / Linux the GUI ใช้ Symbolic Link เป็นพา ธ (โดยไม่ต้องแก้ไขฟิลด์ชื่อไฟล์)
ดังที่คนอื่น ๆ ได้กล่าวถึงลิงก์สัญลักษณ์เป็นหนึ่งในประเภทของลิงก์ที่มีอยู่ในระดับระบบไฟล์ ฉันได้พบแล้ว เอกสารนี้ มีประโยชน์มาก (โดยเฉพาะส่วน "ครอบตัด / เปิด / ตัดต่อด้านนอก / ลิงก์สัญลักษณ์ / สัญลักษณ์") และเครื่องมือก็ดูดีเช่นกัน (โดยการกล่าวถึงสิ่งนี้และ mklink หวังว่าการค้นหาเพิ่มเติมจะได้พบกับการสนทนานี้)
ช็อตคัตคือไฟล์ไม่ใช่ลิงค์จริงและโดยทั่วไปจะติดตามได้สำเร็จเป็นลิงค์เมื่อตีความโดย Windows UI (ส่วนต่อประสานผู้ใช้) ตัวอย่างเช่นเมื่อคุณดับเบิลคลิกที่โฟลเดอร์ทางลัด Windows จะนำคุณไปยังตำแหน่งอื่น (ซึ่งรวมถึงกล่องโต้ตอบเปิดไฟล์และบันทึกไฟล์ทั่วไปที่แอปพลิเคชันส่วนใหญ่เรียกใช้) บนเดสก์ท็อปของฉันฉันมีทางลัดไปยังโฟลเดอร์นี้: C: \ ProgramData \ Microsoft \ Windows \ Start
ชื่อไฟล์ของ shorcut คือ: C: \ Users \ user5 \ Desktop \ Games.lnk แม้ว่า Windows จะระงับนามสกุล. lnk และเพียงแค่แสดง "เกม" แม้ว่าคุณจะไม่ได้เลือก "ซ่อนนามสกุลสำหรับประเภทไฟล์ที่รู้จัก" แต่ถ้าคุณเปิดพรอมต์คำสั่งและทำ dir คุณจะเห็น:
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
ฉันสามารถสร้างสิ่งที่เทียบเท่าได้ด้วย symlink โดยใช้ตัวเลือก \ D (สำหรับไดเรกทอรี):
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>
(ไดเรกทอรี junction (\ J) เป็นตัวเลือกเช่นกันเนื่องจากนี่คือลิงก์โฟลเดอร์) Windows explorer เช่นเดียวกับคอนโซลนี้และแอปพลิเคชั่นส่วนใหญ่จะช่วยให้คุณสามารถเรียกดู "ลงใน" ไดเรกทอรีย่อยนี้ชัดเจนมากกว่า (a) การเปลี่ยนเส้นทาง "ข้าม" ไปยังตำแหน่งอื่นหรือ (b) ล้มเหลว
ทางลัดไม่ทำงานเหมือนไดเรกทอรีย่อย ฉันสามารถเรียกใช้ไฟล์เริ่มต้นของ Windows UI ได้ด้วยคำสั่งนี้ (จะเปิดโฟลเดอร์ "G" ใน Windows Explorer):
C:\Users\user5\Desktop>"Games.lnk"
ในขณะที่ mysymlink อยู่ในรายการ (ดูจำนวน) เป็นไดเรกทอรีย่อยที่แท้จริงและไม่สามารถเปิดตัวด้วยวิธีดังกล่าว:
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.
ในทางกลับกันคุณไม่สามารถเปลี่ยนไดเรกทอรีเป็นทางลัดได้:
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
Windows UI ช่วยให้คุณคลิกขวาเพื่อแก้ไขคุณสมบัติของทางลัด หรือข้อมูลต่อไปนี้แสดงให้เห็นถึงสิ่งที่ถูกจัดเก็บจริงในไฟล์. lnk (ข้อมูลไบนารี่) แม้ว่าตัวแก้ไข hex จะแสดงผลที่ดีกว่า
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
ในขณะที่พยายามเรียกใช้ Notepad บนโฟลเดอร์ย่อยที่แท้จริงจะปรากฏขึ้นข้อความแสดงข้อผิดพลาด "การเข้าถึงถูกปฏิเสธ" และ Notepad เปล่า
ในทางกลับกันถ้าฉันสร้างไฟล์ symlink (ไม่ใช่ symlink ของโฟลเดอร์) ฉันสามารถเปิดใช้งานด้วย Notepad การเรียกใช้ notepad.exe ต่อไปนี้การทำงานสองครั้งแรกและครั้งที่สามล้มเหลว (จะเปิดไฟล์. LNK ซึ่งเป็นไบนารี 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"
นี่ไม่ใช่แค่เรื่องของคอนโซล การคัดลอกทางลัดไปยัง Notepad ไปยังเดสก์ท็อปของฉันและลองลากและวางทั้งสามลงบนมันแสดงถึงพฤติกรรมที่เหมือนกัน (เนื่องจากการลากและวางซึ่งแตกต่างจากการดับเบิลคลิกทำให้แอปพลิเคชันตีความทางลัด)
เกี่ยวกับความแตกต่างระหว่าง symlink ไดเรกทอรีและทางแยกให้ดู การสนทนานี้ และนี่คือสิ่งที่ดี คำอธิบายที่เป็นประโยชน์ :
"ความแตกต่างที่สำคัญในวิธีที่ Windows แก้ไขการเชื่อมโยงสัญลักษณ์และการแยกไดเรกทอรีเป็นที่ที่การประมวลผลเกิดขึ้น Windows จะประมวลผลการเชื่อมโยงสัญลักษณ์บนระบบภายในแม้ว่าพวกเขาจะอ้างอิงตำแหน่งบนเซิร์ฟเวอร์ไฟล์ระยะไกลก็ตาม Windows จะประมวลผลการแยกไดเรกทอรีที่อ้างอิงระยะไกล ไฟล์เซิร์ฟเวอร์บนเซิร์ฟเวอร์ตัวลิงก์สัญลักษณ์บนเซิร์ฟเวอร์จึงสามารถอ้างถึงตำแหน่งที่เข้าถึงได้จากไคลเอนต์เท่านั้นเช่นไดรฟ์ข้อมูลอื่น ๆ ในขณะที่ไม่สามารถแยกไดเรกทอรีได้เมื่อต้องการแก้ไขสิ่งนี้ Windows Vista สนับสนุนการเชื่อมโยงสัญลักษณ์ใหม่สำหรับไฟล์ทั้งสอง และไดเรกทอรี
"คำสั่งระบบไฟล์จำนวนมากได้รับการปรับปรุงเพื่อให้เข้าใจถึงผลกระทบของลิงก์สัญลักษณ์ตัวอย่างเช่นคำสั่งลบจะไม่ติดตามลิงก์ซึ่งจะส่งผลให้เกิดการลบเป้าหมาย แต่เพื่อลบลิงก์แทนอย่างไรก็ตามเนื่องจากไม่ใช่ทุกแอปพลิเคชันทั้งหมด อาจจัดการลิงก์สัญลักษณ์ได้อย่างถูกต้องการสร้างลิงก์สัญลักษณ์ต้องใช้สิทธิ์สร้างสัญลักษณ์ลิงก์ใหม่ที่ผู้ดูแลระบบมีตามค่าเริ่มต้นเท่านั้น "
"ลิงก์สัญลักษณ์ต่างจากช็อตคัตในสิ่งที่เสนอ transparent * pathway ไปยังวัตถุข้อมูลที่ต้องการพร้อมกับทางลัด (.lnk) มีบางอย่างที่ต้องอ่านและตีความเนื้อหาของ ไฟล์ทางลัดและจากนั้นเปิดไฟล์ที่อ้างอิง (เช่นเป็น กระบวนการสองขั้นตอน) เมื่อแอปพลิเคชันใช้ symlink จะได้รับ เข้าถึงวัตถุข้อมูลทันทีที่อ้างอิงโดย symlink (เช่นนั้น เป็นกระบวนการขั้นตอนเดียว) "
ที่มา: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
บางครั้งการมีตัวอย่างที่ใช้งานได้ดีก็อธิบายได้ไม่ดีว่าฉันใช้ฟังก์ชั่นนี้อย่างไร
ฉันใช้ google ไดรฟ์เพื่อสำรองไฟล์ แต่บางครั้งฉันต้องการสำรองไฟล์ในโฟลเดอร์เฉพาะ (ฉันไม่สามารถย้ายไปยังไดรฟ์ .. / google) โดยเฉพาะอย่างยิ่งกับแอพสากล windows 10 ไฟล์ config และอื่น ๆ จะถูกเก็บไว้ใน appdata และส่วนใหญ่ฉันไม่สามารถเปลี่ยนตำแหน่งนี้ได้
ฉันใช้แอพ stikynot ของ windows พื้นเมืองและฉันต้องการสำรองข้อมูลบันทึกย่อของฉันดังนั้นฉันจึงใช้ symlink ที่นี่ Google ไดรฟ์รู้จักการเชื่อมโยงเป็นไฟล์จริงและซิงค์ไฟล์ได้ดีในขณะที่ไฟล์จริงยังคงอยู่ในโฟลเดอร์ appdata
เมื่อฉันมีไฟล์เช่นโฟลเดอร์โครงการในเครื่องที่ฉันไม่ต้องการซิงค์กับคลาวด์ฉันใช้ทางลัด (คัดลอก, วางทางลัด & วาง)