シンボリックリンクとショートカットの違いは何ですか?


回答:


54

重要な点は、ショートカットは単なるファイルであるということです。それらはサイズ(小さいサイズ、それらが指す場所を参照するだけです)を持ち、それらが使用されるためにはそのファイルタイプをサポートするアプリケーションを必要とします。

シンボリックリンクはファイルシステムレベルです、そして、すべてはそれを見ます として 元のファイルアプリケーションがシンボリックリンクを使用するための特別なサポートは必要ありません。


6
ツリーウォーキングコマンド(unixユーティリティのようなもの) findtarduなど) 行う シンボリックリンクについて知っている必要があるか、彼らはいくつかの非常に愚かなことをするかもしれません。たとえば、シンボリックリンクをたどることによってファイルシステムにサイクルが作成される可能性があります。 悪い
dmckee

9
@dmckee;非常に良い点ですが、それに従うために特別なサポートを必要とするアプリケーションはありませんが、それらをサポートするための特別なサポートは必要ありません。 ではない それらに従う!
Phoshi

はい、サポートは必要ありません つかいます それらがしかしする必要がある について知る それら。
dmckee

@Phoshi正確にあなたが何を意味するのか "そしてそれらは使用されるためにそのファイルタイプをサポートするアプリケーションを必要とします。"例を挙げて説明してください。
Geek

5
@Geek: "ショートカット"は事実上他のファイルのファイルパスを保持するファイルです。それを読むとき、あなたは次にどこを見るべきかをあなたに告げる特別にフォーマットされたファイルを読みます。あなたのアプリケーションがリスンしないで、単にファイルを逐語的に読むのであれば、あなたはそれに従わない。シンボリックリンクはファイルシステムレベルであり、データへの「真の」パスを保持するのはファイルシステムそのものであり、アクセスしようとすると、ポイントされたデータが取得されます。
Phoshi

19

"シンボリックリンク"は実際には機能的にディレクトリやファイルの代わりになることができ、Unix / Linux環境で一般的に使われています。 Windowsではこれをサポートしているようですが、実際にはまだ使用されていません。

「ショートカット」は、表示されるアイコンのような他のものと共に宛先ファイルまたはディレクトリへの参照を持つ単なる通常のファイルです。シンボリックリンクとは異なり、DOSでは「cd ./shortcut-name」を使用できません(Unix / Linuxでは「cd ./symlink-name」を使用でき、実際のサブディレクトリのように機能します)。

また、ほとんどのWindowsアプリケーションでは、[ファイル] - > [GUIを開く]ダイアログでショートカットをクリックすると、ファイル名フィールドにそのショートカットのファイル名が表示されますシンボリックリンクをパスとして扱います(filenameフィールドを変更せずに)。


Unix / Linuxでは、ファイルにのみ適用される「ディレクトリ」には適用されない「ハードリンク」もあります。これらはファイルシステム内の自然なファイル名エントリであり、他の場所にある別のファイル名エントリと同じファイルデータを指すことがあります(同じディレクトリにある必要はありません)。
Randolf Richardson

4
@ランドルフ: 1) ハードリンクはWindowsにも存在します。 2) シェルショートカットの1つの機能は、自動ターゲットトラッキングです。ターゲットが移動されても、ほとんどの場合ショートカットは機能し続けます。 (ADドメインでは、コンピュータ上でファイルを追跡することさえ可能です。たとえば、HDを別の場所に移動した場合などです。) 3) シンボリックリンクの用途の1つは、ファイルまたはディレクトリを別の場所にリダイレクトすることです。これらはファイル(ジャンクションとは異なり)やディレクトリ、ハードファイルシステムとは異なるクロスファイルシステムを指すことができます。
grawity

コメントが遅れました、そして私が私が何をしているのかわからないかどうかわからないのですが、私は自分のvimrcファイルのショートカットの代わりにシンボリックリンクを作らなければなりませんでした。別のディレクトリ)
making3

10

他の人が述べたように、シンボリックリンクはファイルシステムレベルで利用可能な種類のリンクの1つであり、アプリケーションに対して透過的です。見つけました この文書 非常に役に立ちます(特に "クロップ/アンロール/スプライスの外部ジャンクション/シンボリックリンク"セクション)。そしてそこにあるツールも良さそうです。 (これに言及し、mklinkすることで、もっと多くの検索でこの議論が見つかるはずです。)

ショートカットはファイルであり、実際のリンクではありません。通常、Windows UI(ユーザーインターフェイス)で解釈されると、リンクとしてうまくいくだけです。たとえば、フォルダショートカットをダブルクリックすると、Windowsによってその場所にリダイレクトされます。私のデスクトップには、このフォルダへのショートカットがあります。C:¥ProgramData¥Microsoft¥Windows¥Start Menu¥Programs¥G

shorcutのファイル名は、C:\ Users \ user5 \ Desktop \ Games.lnkです。ただし、「既知のファイルの種類の拡張子を隠す」のチェックを外しても、Windowsは拡張子.lnkを抑制し、単に「Games」と表示します。しかし、コマンドプロンプトを開いて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)もオプションです)。別の場所への "交差"、または(b)失敗。

ショートカットはサブディレクトリのようには動作しません。私はこのコマンドでWindows UIのデフォルトのファイルの振る舞いを呼び出すことができます(これはWindowsエクスプローラで "G"フォルダを開きます):

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ファイルに実際に格納されている内容(バイナリデータ)を正確に示しています。ただし、16進エディタの方が適切に表示されます。

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

実際のサブフォルダでメモ帳を実行しようとすると、「アクセスが拒否されました」というエラーメッセージと空のメモ帳が表示されます。

逆に、ファイルのシンボリックリンク(フォルダのシンボリックリンクではない)を作成した場合は、メモ帳で起動できます。次のnotepad.exe呼び出しのうち、最初の2つは動作し、3番目は失敗します(それは.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"

これは単なるコンソールの問題ではありません。私のデスクトップにメモ帳へのショートカットをコピーして、その上に3つのそれぞれをドラッグアンドドロップしても、まったく同じ動作を示します。 (ダブルクリックとは異なり、ドラッグアンドドロップでアプリケーションがショートカットを解釈できるようにするためです。)

ディレクトリのシンボリックリンクとジャンクションの違いについては、 この議論 そして、これがとても 役に立つ説明

「Windowsがシンボリックリンクとディレクトリジャンクションを解決する方法の大きな違いは、処理が行われる場所です。Windowsがリモートファイルサーバー上の場所を参照する場合でも、ローカルシステム上のシンボリックリンクを処理します。そのため、サーバー上のシンボリックリンクは、他のクライアントボリュームのように、クライアントからしかアクセスできない場所を指すことができますが、ディレクトリジャンクションはアクセスできません。とディレクトリ。

「シンボリックリンクの意味を理解するために、多くのファイルシステムコマンドが更新されました。たとえば、Deleteコマンドはリンクをたどらず、ターゲットを削除するのではなくリンクを削除することを知っています。シンボリックリンクを正しく処理するには、シンボリックリンクを作成するには、管理者だけがデフォルトで持っている新しいシンボリックリンクの作成権限が必要です。 "


2

「シンボリックリンクはショートカットとは異なります。   ショートカット付きの目的のデータオブジェクトへのtransparent *経路   (.lnk)、何かの内容を読んで解釈しなければならない   ショートカットファイルを開いてから、それが参照しているファイルを開きます。   二段階プロセス)。アプリケーションがシンボリックリンクを使用するとき、それは得ます   シンボリックリンクによって参照されるデータオブジェクトへの即時アクセス   ワンステッププロセスです。 "

ソース: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html


0

機能的な例があるのは良いことではありませんが、この関数の使い方を説明しています。

ファイルのバックアップにはGoogleドライブを使用しますが、特定のフォルダにファイルをバックアップしたいことがあります(それらを../googleドライブに移動できません)。特にWindows 10ユニバーサルアプリケーションでは、設定ファイルなどはappdataに格納されており、ほとんどの場合、この場所を変更することはできません。

私はwindowsネイティブstikynotアプリを使い、私は自分のノートをバックアップしたかったので、私はここでシンボリックリンクを使用しました。 Googleドライブはリンクを実際のファイルとして認識し、実際のファイルはまだappdataフォルダにある間にファイルを正常に同期します。

ローカルにプロジェクトフォルダのようなファイルをクラウドに同期したくない場合は、ショートカットを使用します(コピー、貼り付け - &gt;ショートカットの貼り付け)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.