Là các liên kết cứng tương đương với các phím tắt Windows?


52

Wikipedia định nghĩa một liên kết cứng là:

một mục nhập thư mục liên kết tên với một tệp trên một hệ thống tệp. (Một thư mục tự nó là một loại tệp đặc biệt chứa danh sách các mục như vậy.) Thuật ngữ này được sử dụng trong các hệ thống tệp cho phép tạo nhiều liên kết cứng cho cùng một tệp.

Tôi tự hỏi liệu khái niệm liên kết cứng có tương đương với khái niệm Shortcut của Windows không .

Nếu các liên kết cứng không tương đương với các phím tắt, thì tính năng Windows gần nhất với các liên kết cứng là gì?


1
Thực sự có một số tài liệu tham khảo tuyệt vời từ trang wiki mà bạn đã chia sẻ.
lập

8
Microsoft NTFS không hỗ trợ liên kết cứng và chúng rất giống với liên kết cứng unix. Tôi nghĩ các phím tắt là đối tượng đặc biệt cản trở môi trường cửa sổ nhưng chúng không liên quan đến tổ chức
filesytem

Liên kết sau đây cung cấp một lời giải thích tốt: comptb.cects.com/ Từ

3
Tôi nghĩ song song là sai lệch, Shortcut là "giao diện" liên kết chỉ các tệp có thông tin văn bản về mục tiêu được giao diện diễn giải chứ không phải bởi hệ thống tệp. Từ một dòng lệnh họ không thực sự chỉ đến một cái gì đó theo nghĩa hệ thống tập tin. Windows (hay nói tốt hơn là NTFS) có các liên kết tượng trưng thích hợp en.wikipedia.org/wiki/NTFS_symbolic_link không phải là phím tắt cũng không phải là liên kết cứng. Tôi thực sự sử dụng chúng trong Windows để có các thư mục Dropbox ở bất cứ đâu, điều này không thể thực hiện được bằng các phím tắt.
alfC

5
Các tệp lối tắt Windows rất giống với các tệp .desktop của Linux. Liên kết tượng trưng Linux và liên kết cứng là một điều hoàn toàn khác đôi khi phục vụ cùng một mục đích.
mikebabcock

Câu trả lời:


113

Không, một liên kết cứng là hoàn toàn khác nhau. Liên kết mềm gần với phím tắt Windows hơn (mặc dù có những khác biệt quan trọng, liên kết tượng trưng tương tự như phím tắt Windows hơn so với liên kết cứng). Một liên kết cứng là một điều khác biệt và bạn sẽ không bao giờ cần.

Tóm lại, một liên kết mềm được tạo bằng lệnh này:

ln -s foo bar

Nếu bạn sau đó chạy ls -l, bạn sẽ thấy:

lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

->nghĩa barlà một liên kết đến foo. Vì vậy, mở bar, với một trình soạn thảo văn bản chẳng hạn, sẽ thực sự mở tệp riêng biệt foo. Tuy nhiên, xóa barsẽ chỉ xóa các phím tắt, nó sẽ không ảnh hưởng đến tập tin foo.

Mặt khác, các liên kết cứng được tạo bằng lệnh này:

ln foo bar

Nếu bây giờ bạn chạy ls -l, không có dấu hiệu cho thấy bất kỳ mối quan hệ nào giữa các tệp:

-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

Tuy nhiên, và điều này rất quan trọng, những người này thực sự là cùng một tập tin . Các tệp trên hệ thống tệp Unix được lưu trữ bằng cách sử dụng inodes ; một inode về cơ bản là cách hệ thống tập tin ánh xạ tên tệp đến một vị trí cụ thể trên ổ cứng vật lý. Vì vậy, các liên kết cứng là các tệp trỏ đến cùng một nút với mục tiêu của chúng. Một cách khác để đặt điều này là tất cả các tệp thực sự là các liên kết cứng trỏ đến các nút của chúng. Tạo một liên kết cứng đến một tệp chỉ cần tạo một con trỏ (tệp) mới trên hệ thống tệp trỏ đến cùng một nút. Mỗi inode có thể có nhiều tệp trỏ đến nó hoặc một hoặc không.

Để hiểu rõ hơn về điều này, hãy sử dụng ls -iphần hiển thị inode được liên kết với một tệp. Hãy tạo một liên kết mềm và một liên kết cứng và xem điều gì sẽ xảy ra:

ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo

Bây giờ, hãy kiểm tra các nút của họ:

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy ở trên, cả hai fooHardLinkToFoocó cùng một nút (16648029) trong khi SoftLinkToFoo có một cái khác (16648036).

Điều gì xảy ra nếu chúng ta đổi tên foovới mv foo bar?

nhập mô tả hình ảnh ở đây

Màu đỏ biểu thị một liên kết mềm bị hỏng, một liên kết không thể tìm thấy mục tiêu. Điều này là do các liên kết mềm trỏ đến tên của tệp chứ không phải inode của nó. Lưu ý rằng mặc dù thay đổi tên, inode vẫn giữ nguyên nên liên kết cứng vẫn ổn, nó vẫn hoạt động.

Tóm lại, liên kết cứng thực sự là hai biểu hiện của cùng một tệp; chúng là các con trỏ tới cùng một phần của đĩa. Liên kết mềm chỉ là lối tắt. Để có một sự tương tự trong thế giới thực, các liên kết cứng giống như hai số điện thoại khác nhau cho cùng một dòng điện thoại và các liên kết mềm giống như có hai dòng điện thoại khác nhau trong cùng một nhà.


6
@Kiwy Điều ngược lại: các liên kết tuyệt đối thất bại theo nhiều cách khác nhau (ngay khi bạn di chuyển dữ liệu xung quanh, gắn kết nó đến một nơi khác, sao lưu, lên xuống) và tốt nhất nên tránh.
Gilles 'SO- đừng trở nên xấu xa'

3
Cũng đáng lưu ý rằng việc xóa (thông qua rmhoặc unlink()) một liên kết cứng chỉ làm giảm số lượng liên kết cho đến khi số lượng liên kết đạt đến 0, khi các khối bị chiếm bởi nội dung tệp được giải phóng. Tôi không chắc rằng nói “liên kết cứng thực sự hai trường hợp của cùng một tập tin” là đúng đúng, kể từ khi hai tên trỏ đến inode tương tự, và do đó cùng một nội dung, chứ không phải là có được hai trường hợp của tập tin bản thân trong bất kỳ ý nghĩa.
Emmet

7
Lưu ý rằng phím tắt Windows là một tệp được sử dụng bởi trình bao và do đó có thể thực hiện những việc mà trình bao biết, nhưng không phải là hệ thống tệp. Ví dụ: bạn có thể tạo các phím tắt vào không gian tên shell (ví dụ Bảng điều khiển, Máy tính, v.v.) hoặc bạn có thể tạo các phím tắt cho các ứng dụng chưa được cài đặt (sẽ được cài đặt ở lần sử dụng đầu tiên). Những thứ đó không có tương đương trực tiếp trong thế giới hệ thống tập tin.
Joey

2
Tôi thích câu trả lời này nhưng thực sự khá kém trong việc hiểu thế nào là một phím tắt Windows. @Shaakunthala bên dưới có phản hồi tốt hơn vì phím tắt Windows giống với tệp .desktop của Linux hơn là một liên kết tượng trưng.
mikebabcock

18

Có một lời giải thích tốt về các liên kết mềm và cứng là gì, nhưng một điều cần được làm rõ.

Cửa sổ các phím tắt tương đương hoặc tương tự để không phải liên kết mềm cũng không liên kết cứng . Ở cấp độ hệ thống tập tin, chúng chỉ là tập tin. Đó là cái vỏ hiểu cấu trúc của chúng và diễn giải chúng như các liên kết. Phím tắt Windows cũng có thể trỏ đến các đối tượng trong không gian tên shell không liên quan đến hệ thống tệp (máy in, mục bảng điều khiển, thư mục ảo).

Các phím tắt Windows, ngoài tên của đối tượng hệ thống tệp, chứa thông tin sau: PIDL ("đường dẫn" nhị phân mờ trong không gian tên shell), mô tả, phím nóng, biểu tượng, thư mục làm việc. Windows cũng thêm định danh đối tượng NTFS nếu sử dụng hệ thống tệp NTFS để sửa các phím tắt bị hỏng.

Tương đương thô của một phím tắt Windows là một tệp .desktop . Xem câu hỏi này trên SuperUser: Có tương đương với .lnk trong Linux không?


6

Không. Trong Linux mọi thứ hoạt động khác nhau.

Mỗi tệp được đại diện bởi một đối tượng gọi là 'inode'. Mỗi inode có một số (ID) được liên kết với nó.

Như chúng ta biết con người không giỏi nhớ số nhưng tên. (Đó là cách danh bạ phát triển)

Do đó, tên tệp được đưa vào hình ảnh để cung cấp cho mỗi inode một tên người có thể đọc được. Về cơ bản, một liên kết cứng liên kết một tên tệp với một nút. Một inode có thể có nhiều liên kết cứng. Nếu không có liên kết cứng nào xuất hiện cho một nút cụ thể, không gian đĩa được sử dụng bởi nút đó có thể được phân bổ lại cho các tệp mới. Có nghĩa là, ít nhất một liên kết cứng phải xuất hiện cho mỗi tệp. Tên tệp (được hiển thị dưới dạng tên tệp / biểu tượng bạn thấy trong trình duyệt tệp) là một liên kết cứng.

Trong Windows, phím tắt là một tệp riêng (tệp * .lnk). Nó chứa thông tin về tệp gốc (có thể hiểu đường dẫn tệp). Trong nhận thức của Linux, một phím tắt Windows sẽ là một nút inode khác được liên kết cứng với tên tệp kết thúc bằng '.lnk'.


3
NTFS thực sự hoạt động rất giống như thế này. Một tệp là một mục trong MFT và các mục nhập thư mục chỉ cần ánh xạ tên tệp thành ID tệp. Nó hỗ trợ các liên kết cứng và, kể từ 2008/7 / Vista (?), Thậm chí cả các liên kết tượng trưng. Tại thời điểm này, sự khác biệt lớn nhất là văn hóa.
cHao

2

Trên Windows, bạn cũng có thể tạo liên kết cứng nếu bạn có hệ thống tệp NTFS.

fsutil hardlink create target_file source_file

Các tập tin phải nằm trên cùng một ổ đĩa logic.


Điều đó đúng - NTFS cũng hỗ trợ các liên kết cứng. Thông thường các công cụ yêu cầu bạn phải có đặc quyền quản trị để tạo chúng. Về "cùng một ổ đĩa logic" - sẽ chính xác hơn để nói, chúng cần phải nằm trên cùng một hệ thống tệp. Một ổ đĩa logic có thể là bất cứ thứ gì, bao gồm cả ký tự ổ đĩa được tạo bởi substlệnh. Tuy nhiên, một công cụ có thể không biết / quan tâm đến điều này và do đó từ chối tạo một liên kết cứng. Một điều rất hữu ích là Link Shell Extension cho phép trình thám hiểm tạo chúng.
Tobias

1

Một sự khác biệt lớn, liên kết cứng không thể được tạo cho các thư mục, nhưng đối với các tệp.

Phím tắt có thể được tạo cho các thư mục, vì vậy bạn không thể nói chúng tương đương nhau.

Câu hỏi của bạn nên là sự khác biệt giữa liên kết tượng trưng hoặc liên kết mềmphím tắt .

theo điều này:

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.

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

Vì vậy, khi bạn nhấp vào một phím tắt sẽ thay đổi thư mục của bạn thành tệp thực tế, trong khi liên kết mềm sẽ đề cập đến vị trí của nó như là tệp thực tế, đối với Linux, bạn có thể sử dụng thiết bị đầu cuối và cd để liên kết tượng trưng trong khi bạn không thể cd thành phím tắt .

Một phím tắt Windows và một trình khởi chạy Linux (chỉ vào một số vị trí) sẽ giống hệt nhau.


2
Gì? Liên kết mềm chỉ là các tập tin, mặc dù những cái lạ, chúng cũng chiếm các nút chẳng hạn. Chúng KHÔNG được coi là bản gốc (đó là các liên kết cứng). Mặc dù sự thật là các liên kết cứng không được phép cho các thư mục trong hầu hết các hệ điều hành, đây chỉ là một tính năng an toàn và có ngoại lệ cho điều này (ví dụ như cỗ máy thời gian OSX). Và tất nhiên bạn có thể cd vào các phím tắt (Tôi giả sử bạn có nghĩa là các phím tắt Windows vì như bạn nói bạn có thể cd vào các liên kết mềm).
terdon

1
bạn có chắc chắn có thể sử dụng cmd để cd vào một phím tắt.
nux

1
Tôi vừa kích hoạt Windows VM của mình và tạo một lối tắt đến một thư mục trên Bàn làm việc của tôi, các phím tắt windows rất giống (nếu không giống hệt) với các liên kết tượng trưng. Trong khi bạn không thể cd cho họ bằng cmd.exe vì một số lý do, bạn có thể tạo .lnk vào một thư mục và sử dụng nó thông qua explorer.
terdon

1
cử tri xuống nên đưa ra một lý do để hạ thấp
nux

5
Xin lỗi, vẫn không đúng. Liên kết tượng trưng là các tệp chứa mục tiêu của chúng dưới dạng văn bản thuần túy (xem tại đây ), liên kết tượng trưng không được coi là bản gốc, đó là toàn bộ sự khác biệt giữa liên kết tượng trưng và liên kết cứng. Các trình khởi chạy Linux (tôi giả sử bạn có nghĩa là các tệp .desktop) không liên quan gì đến điều này cả, chúng hoàn toàn khác nhau. Như bạn nói, các phím tắt Windows có thể trỏ đến các tệp (bao gồm các chương trình) và các thư mục (mac và windows có các thư mục, Linux có các thư mục) .desktop chỉ cho phép bạn khởi chạy một chương trình. Họ không liên kết ở bất cứ đâu.
terdon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.