Câu trả lời:
Tôi nghĩ rằng điểm quan trọng là các phím tắt chỉ là một tập tin. Chúng có kích thước (Một cái nhỏ, chỉ tham chiếu ở nơi chúng trỏ đến) và chúng yêu cầu một ứng dụng hỗ trợ kiểu tệp đó để được sử dụng.
Một liên kết tượng trưng là cấp độ hệ thống tệp và mọi thứ đều xem nó là tệp gốc. Một ứng dụng không cần hỗ trợ đặc biệt để sử dụng một liên kết tượng trưng.
find
, tar
, du
, vv) làm cần biết về liên kết tượng trưng hoặc họ có thể làm một số việc rất ngu ngốc. Ví dụ, làm mù các liên kết tượng trưng có thể tạo ra các chu kỳ trong hệ thống tập tin và điều đó thật tệ .
"Liên kết tượng trưng" thực sự có thể hoạt động như một sự thay thế cho một thư mục hoặc tệp theo cách có chức năng và thường được sử dụng trong môi trường Unix / Linux. Mặc dù rõ ràng có hỗ trợ cho điều này trong Windows, tôi chưa thấy sử dụng thực tế nào cho nó.
"Phím tắt" chỉ là một tệp thông thường có tham chiếu đến tệp đích hoặc thư mục cùng với một số thứ khác như biểu tượng sẽ được hiển thị. Không giống như Liên kết tượng trưng, bạn không thể "cd ./shortcut-name" trong DOS (trong Unix / Linux, bạn có thể "cd ./symlink-name" và nó sẽ hoạt động giống như một thư mục con thực sự).
Ngoài ra, trong hầu hết các ứng dụng Windows, khi bạn nhấp vào Phím tắt trong bất kỳ cuộc hội thoại File-> Open GUI nào, trường tên tệp của bạn sẽ được điền với tên tệp của phím tắt đó cũng như hoạt động như một thư mục con, trong khi ở Unix / Linux, GUI xử lý Liên kết tượng trưng dưới dạng đường dẫn (không sửa đổi trường tên tệp).
Như những người khác đã đề cập, một liên kết tượng trưng là một trong những loại liên kết có sẵn ở cấp hệ thống tệp, làm cho nó trong suốt đối với các ứng dụng. Tôi đã tìm thấy tài liệu này rất hữu ích (đặc biệt là phần "Cắt / Không kiểm soát / Mối nối ngoài / Liên kết tượng trưng"). Và công cụ ở đó trông cũng đẹp. (Bằng cách đề cập đến điều này và mklink, hy vọng nhiều tìm kiếm sẽ tìm thấy cuộc thảo luận này.)
Phím tắt là một tệp, không phải là một liên kết thực và nó thường chỉ được theo dõi thành công dưới dạng một liên kết khi được giao diện bởi Giao diện người dùng Windows (giao diện người dùng). Ví dụ: khi bạn nhấp đúp vào phím tắt thư mục, Windows sẽ chuyển hướng bạn đến vị trí khác. (Điều này bao gồm các hộp thoại Mở tệp và Lưu tệp chung mà hầu hết các ứng dụng gọi.) Trên máy tính để bàn của tôi, tôi có một lối tắt đến thư mục này: C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ G
Tên tệp của shorcut là: C: \ Users \ user5 \ Desktop \ Games.lnk, mặc dù Windows ngăn chặn phần mở rộng .lnk và chỉ hiển thị "Trò chơi", ngay cả khi bạn bỏ chọn "ẩn tiện ích mở rộng cho các loại tệp đã biết". Nhưng nếu bạn mở một dấu nhắc lệnh và thực hiện một thư mục, bạn sẽ thấy nó:
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
Tôi có thể tạo tương đương với một liên kết tượng trưng bằng cách sử dụng tùy chọn \ D (cho thư mục):
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>
(Ngã ba thư mục (\ J) cũng là một tùy chọn, vì đây là liên kết thư mục.) Windows explorer, giống như bảng điều khiển này và hầu hết các ứng dụng, sẽ cho phép bạn duyệt "xuống" thư mục con rõ ràng này, thay vì (a) chuyển hướng "ngang qua" đến một địa điểm khác hoặc (b) không thành công.
Các phím tắt không hành xử như thư mục con. Tôi có thể gọi hành vi tệp mặc định của giao diện người dùng Windows bằng lệnh này (lệnh này sẽ mở thư mục "G" trong Windows Explorer):
C:\Users\user5\Desktop>"Games.lnk"
Trong khi mysymlink được liệt kê (xem số lượng) là thư mục con thực sự và không thể được khởi chạy theo cách đó:
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.
Ngược lại, bạn không thể thay đổi thư mục thành một phím tắt:
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
Giao diện người dùng Windows cho phép bạn nhấp chuột phải để chỉnh sửa thuộc tính của phím tắt. Hoặc, phần sau đây hiển thị chính xác những gì thực sự được lưu trữ trong tệp .lnk (dữ liệu nhị phân), mặc dù trình soạn thảo hex sẽ hiển thị tốt hơn:
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
Trong khi cố gắng thực thi Notepad trên thư mục con thực tế sẽ xuất hiện thông báo lỗi "Truy cập bị từ chối" và một Notepad trống.
Ngược lại, nếu tôi tạo một symlink tệp (không phải là symlink thư mục), tôi có thể khởi chạy nó bằng Notepad. Trong số các cuộc gọi notepad.exe sau đây, hai lần đầu tiên hoạt động và lần thứ ba không thành công (nó mở ra tệp .LNK, gobbledegook nhị phân).
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"
Đây không chỉ là một điều khiển. Sao chép một phím tắt vào Notepad vào máy tính để bàn của tôi và thử kéo và thả từng cái vào ba cái trên nó, nó thể hiện chính xác hành vi tương tự. (Vì kéo và thả, không giống như nhấp đúp, cho phép ứng dụng diễn giải lối tắt.)
Về sự khác biệt giữa các liên kết và liên kết thư mục, hãy xem cuộc thảo luận này và đây là một mô tả rất hữu ích :
"Một sự khác biệt lớn trong cách Windows giải quyết các liên kết tượng trưng và các mối nối thư mục là nơi diễn ra quá trình xử lý. Windows xử lý các liên kết tượng trưng trên hệ thống cục bộ, ngay cả khi chúng tham chiếu một vị trí trên máy chủ tệp từ xa. Windows xử lý các liên kết thư mục tham chiếu từ xa Do đó, các liên kết tượng trưng trên máy chủ có thể tham chiếu đến các vị trí chỉ có thể truy cập từ máy khách, như các khối máy khách khác, trong khi các liên kết thư mục không thể. Để giải quyết điều này, Windows Vista hỗ trợ loại liên kết tượng trưng mới cho cả hai tệp và thư mục.
"Nhiều lệnh hệ thống tệp đã được cập nhật để hiểu ý nghĩa của các liên kết tượng trưng. Ví dụ: lệnh Xóa biết không theo các liên kết, điều này sẽ dẫn đến việc xóa mục tiêu, nhưng thay vào đó để xóa liên kết. có thể xử lý các liên kết tượng trưng một cách chính xác, tạo một liên kết tượng trưng đòi hỏi đặc quyền Tạo liên kết biểu tượng mới mà chỉ quản trị viên mới có theo mặc định. "
"Liên kết tượng trưng khác với Lối tắt ở chỗ chúng cung cấp đường dẫn * trong suốt đến đối tượng dữ liệu mong muốn, với một phím tắt (.lnk), một cái gì đó phải đọc và giải thích nội dung của tệp lối tắt và sau đó mở tệp mà nó tham chiếu (nghĩa là đó là một quá trình gồm hai bước). Khi một ứng dụng sử dụng một liên kết tượng trưng, nó sẽ truy cập ngay vào đối tượng dữ liệu được tham chiếu bởi symlink (tức là đó là một quá trình một bước). "
Nguồn: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
Đôi khi thật tốt khi có một ví dụ chức năng, vì vậy tôi sẽ giải thích cách tôi sử dụng chức năng này.
Tôi sử dụng google drive để sao lưu các tệp, nhưng đôi khi tôi muốn sao lưu các tệp trong một thư mục cụ thể (tôi không thể di chuyển chúng sang ../google drive). Đặc biệt với windows 10 ứng dụng phổ quát, các tệp cấu hình và những thứ đó được lưu trữ trong appdata và hầu hết thời gian tôi không thể thay đổi vị trí này.
Tôi sử dụng ứng dụng stikynot bản địa của windows và tôi muốn sao lưu ghi chú của mình, vì vậy tôi đã sử dụng một symlink ở đây. Ổ đĩa Google nhận ra liên kết là một tệp thực tế và đồng bộ hóa các tệp tốt, trong khi tệp thực tế vẫn nằm trong thư mục appdata.
Khi tôi có các tệp như thư mục dự án cục bộ mà tôi không muốn đồng bộ hóa với đám mây, tôi sử dụng các phím tắt (sao chép, quá khứ-> dán phím tắt).