В чем разница между символьной ссылкой и ярлыком?

в чем разница между символьной ссылкой и ярлыком?

1
задан soandos
07.02.2023 6:11 Количество просмотров материала 2691
Распечатать страницу

5 ответов

Я думаю, что важным моментом является то, что ярлыки-это просто файл. У них есть размер (маленький, который просто ссылается на то, куда они указывают), и им требуется приложение для поддержки этого типа файлов для использования.

символическая ссылка на уровне файловой системы, и все видит это as исходный файл. Приложению не требуется специальная поддержка для использования символьной ссылки.

53
отвечен Phoshi 2023-02-08 13:59

"символическая ссылка" может фактически действовать как замена каталога или файла функциональным способом и обычно используется в средах Unix/Linux. Хотя, по-видимому, есть поддержка этого в Windows, я еще не видел его фактического использования.

"ярлык" - это обычный файл, который содержит ссылку на целевой файл или каталог, вместе с некоторыми другими вещами, как значок на экране. В отличие от символьной ссылки, вы не можете "cd ./ shortcut-name " в DOS (в Unix / Linux вы можете "cd ./ symlink-name " и он будет работать так же, как настоящий подкаталог).

кроме того, в большинстве приложений Windows, при нажатии на ярлык в любом файле->открыть диалог GUI, ваше поле Имя файла заполняется именем файла этого ярлыка, а также он действует как подкаталог, в то время как в Unix/Linux графический интерфейс обрабатывает символическую ссылку в качестве пути (без изменения поля имени файла).

18
отвечен Randolf Richardson 2023-02-08 16:16

как уже упоминалось, символьная ссылка является одним из видов ссылок, доступных на уровне файловой системы, что делает ее прозрачной для приложений. Я нашел документация очень полезно (esp. раздел "обрезать/развернуть / соединить внешние соединения / символические ссылки"). И инструмент там тоже выглядит хорошо. (Упоминая об этом и mklink, надеюсь, что больше поисков найдут это обсуждение.)

ярлык-это файл, а не реальная ссылка, и это, как правило, только успешно используется как ссылка при интерпретации пользовательского интерфейса Windows (пользовательский интерфейс). Например, при двойном щелчке ярлыка папки Windows перенаправляет пользователя в другое расположение. (Сюда входят общие диалоговые окна открытия и сохранения файлов, которые вызываются большинством приложений.) На рабочем столе у меня есть ярлык для этой папки: C:\ProgramData\Microsoft\Windows\Start меню\программы\G

имя файла shorcut: C:\Users\user5\Desktop\Games.lnk, хотя окна подавляет .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

Я могу создать эквивалент с символической ссылкой, используя опцию \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>

(соединение каталогов (\J) также является опцией, так как это ссылка на папку.) Проводник Windows, как и эта консоль и большинство приложений, позволит вам просматривать" вниз в " этот явный подкаталог, вместо (a) перенаправления "Через" в другое место или (b) сбоя.

ярлыки не ведут себя как подкаталоги. Я могу вызвать поведение файла пользовательского интерфейса Windows по умолчанию с помощью этой команды (это открывает папку " G " в Проводнике Windows):

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.

и наоборот, вы не можете изменить-directory на ярлык:

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

пользовательский интерфейс Windows позволяет щелкнуть правой кнопкой мыши, чтобы изменить свойства ярлыка. Или, следующее показывает точно что фактически хранится в .файл lnk (двоичные данные), хотя шестнадцатеричный редактор будет отображаться лучше:

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

в то время как попытка выполнить Блокнот на фактической подпапке появляется сообщение об ошибке "Доступ запрещен", и пустой блокнот.

и наоборот, если я сделаю символическую ссылку на файл (не символическую ссылку на папку), я могу запустить ее с помощью блокнота. Следующего Блокнота.exe вызывает, первые два работают, а третий терпит неудачу (он открывает.Файл LNK, бинарные Бурды).

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"

это не просто консольная вещь. Копирование ярлыка для блокнота на рабочий стол и попытка перетаскивания каждого из трех на него, он демонстрирует точно такое же поведение. (Поскольку перетаскивание, в отличие от двойного щелчка, позволяет приложению интерпретировать ярлык.)

в отношении различий между каталог ссылок и развязки, см. эта дискуссия, а вот полезная описание:

"большая разница в сторону Windows разрешает символических ссылок и переходов каталог, где обработка происходит. Windows обрабатывает символьные ссылки в локальной системе, даже если они ссылаются на расположение на удаленном файловом сервере. Windows обрабатывает соединения каталогов, ссылающихся на удаленный файловый сервер на самом сервере. Поэтому символьные ссылки на сервере могут см. расположения, доступные только с клиента, как и другие клиентские Тома, тогда как соединения каталогов недоступны. Для решения этой проблемы Windows Vista поддерживает новый тип символической ссылки для файлов и каталогов.

"многие команды файловой системы были обновлены, чтобы понять последствия символических ссылок. Например, команда Delete знает, что не следует по ссылкам, что приведет к удалению целевого объекта, а удаляет ссылку. Однако, потому что не все приложения могут корректно обрабатывать символьные ссылки. для создания символьной ссылки требуется новое право на создание символьной ссылки, которое по умолчанию имеют только администраторы."

9
отвечен Jon Coombs 2023-02-08 18:33

"символьные ссылки отличаются от ярлыков тем, что они предлагают прозрачный * путь к нужному объекту данных с ярлыком (.lnk), что-то должно читать и интерпретировать содержание ярлык файла, а затем открыть файл, который он ссылается (т. е. это двухэтапный процесс). Когда приложение использует символическую ссылку, она получает немедленный доступ к объекту данных, на который ссылается символическая ссылка (т. е. представляет собой одноэтапный процесс)."

источник: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

1
отвечен ariefcfa 2023-02-08 20:50

иногда полезно иметь функциональный пример, поэтому я объясню, как я использую эту функцию.

Я использую Google drive для резервного копирования файлов, но иногда я хочу, чтобы резервные копии файлов в определенной папке (я не могу переместить их ../Google Диск). Особенно с Windows 10 универсальные приложения, файлы конфигурации и такие хранятся в AppData и большую часть времени я не могу изменить это место.

Я использую родное приложение Windows stikynot, и я хотел сделать резервную копию моих заметок, поэтому я использовал символическую ссылку здесь. Google Диск распознает ссылку как реальных файлов и синхронизирует файлы нормально, а сам файл остается в папке AppData.

когда у меня есть файлы, такие как папки проекта локально, что я не хочу, чтобы синхронизировать с облаком я использую ярлыки (копировать, прошлое - > вставить ярлык).

0
отвечен sommmen 2023-02-08 23:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх