シンボリックリンクは一般的に ソフトリンク また シンボリックリンク、別のファイルまたはディレクトリを参照する特殊なタイプのファイルです。
このガイドでは、lnコマンドを使用してLinuxでシンボリックリンクを作成し、ファイル間にリンクを作成する方法を学習します。
リンクの種類
Linuxには、ソフトリンクとハードリンクの2種類のリンクがあります。
ハードリンク: ハードリンクは、元のファイルのレプリカです。 ターゲットファイル内のデータへのアクセスを提供します。 ユーザーは、ファイルに対してのみ、ディレクトリのハードリンクを作成できません。 さらに、ハードリンクされたファイルには共通のiノード番号があります。 元のファイルが削除または削除されると、ハードリンクは引き続き機能し、削除されたファイルの内容が含まれます。 ハードリンクは異なるファイルシステムにまたがらないことに注意することも重要です。
ソフトリンク: ハードリンクとは異なり、ソフトリンクは単にファイル名へのポインタであり、別のファイルの内容や参照されているターゲットファイルは含まれていません。 ターゲットファイルが削除または削除されると、ソフトリンクは存在しなくなります。 ソフトリンクの良い面は、ファイルまたはディレクトリへのリンクに使用でき、さまざまなファイルシステムにまたがることができることです。
lnコマンドは、ファイル間のリンクを作成するために使用されます。 このコマンドは、デフォルトでハードリンクを作成します。 ソフトリンクを作成するには、単に追加します -s オプション ( – シンボリック)。
構文:
ln [OPTION] TARGET LINK_NAME
混乱を避けるために、シンボリックリンクを作成するときは、ソースファイルとターゲットファイルの絶対パス(相対パス)を使用してください。
ファイルへのシンボリックリンクを作成する方法
ファイルへのシンボリックリンクを作成するには、次のコマンドを実行します。
$ ln -s { OPTIONS } file symlink
ファイルとシンボリックリンクの両方が定義されている場合、lnコマンドはからリンクを作成します。 ファイル これは、2番目の引数で定義されたファイルの最初の引数です シンボリックリンク。
にとって example、ファイルへのシンボリックリンクを作成するには、構文を使用します。
$ ln -s original_file symlink
注:lnは、成功しても出力を返しません。
コマンドで、 original_file シンボリックリンクを作成する既存のファイルと シンボリックリンク シンボリックリンク付き。
本当のことをしましょう example:
$ ln -s file1.txt sample_link.txt
上記のコマンドは、現在のディレクトリにある既存のファイル「file1.txt」への「sample_link.txt」というシンボリックリンクを作成します。
リンクの作成を確認するには、次のようにlsコマンドを使用します。
$ ls -l sample_link.txt
あなたの出力は私が以下に持っているものに似ているはずです:
lrwxrwxrwx 1 winnie winnie 9 Jul 12 23:43 sample_link.txt -> file1.txt
権限では、 l
フラグは、これがシンボリックリンクであることを示し、文字 - >
シンボリックリンクがファイルを指していることを示します file1.txt
。
パスの問題が原因でシンボリックリンクが機能しない場合があります。フルパスを使用することをお勧めします。
# absolute (full path)
ln -s /path/to/originals/originalfile1.txt backup/copy.txt
# relative
cd backup
ln -s ../originals/originalfile1.txt copy.txt
ディレクトリへのシンボリックリンクを作成する方法
ディレクトリへのシンボリックリンクの作成は、ファイルへのシンボリックリンクを作成するのと同じくらい簡単です。 構文はほとんど同じです。 最初の引数はディレクトリの名前を取り、シンボリックリンクは2番目の引数として指定されます。
以下の構文は example あなたがこれについてどうするかについて:
$ ln -s /path/to/directory ~/directory
にとって example、ディレクトリからシンボリックリンクを作成します /ダウンロード/音楽/ に 〜/ my_music 次のコマンドを実行します。
$ ln -s /Downloads/music ~/my_music
シンボリックリンクを上書きする方法
を呼び出すだけでシンボリックリンクを上書きする lnコマンド 追加の引数がないと、次のように常にエラーが発生します。
にとって example、次のコマンドを再実行しようとすると:
$ ln -s file1.txt sample_link.txt
次のエラーが表示されます。
ln: failed to create symbolic link 'sample_link.txt': File exists
この問題の回避策は、別のオプションを導入することです -f また – 力 図のようにシンボリックリンクの宛先パスを上書きするには:
$ ln -sf file1.txt sample_link.txt
今回は、ソフトリンクを上書きしてもエラーは発生しません。
シンボリックリンクを削除する方法
Linuxまたはシンボリックリンクのシンボリックリンクを削除するには、rmコマンドまたは リンクを解除 指図。 そして、それは非常に簡単です。 にとって リンクを解除 コマンドで、以下の構文を使用してシンボリックリンクを削除します。
$ unlink symlink_to_be_removed
rmコマンドを使用してソフトリンクを削除することは、通常のファイルを削除または削除する場合とまったく同じです。
$ rm symlink_to_be_removed
シンボリックリンクは重要ですか?
次のいずれかを実行する場合は、通常、ファイルへのシンボリックリンクを作成することをお勧めします。
- 必然的に多くのディスクスペースを占有する可能性のある重複コピーを作成せずに、複数の場所からファイルにアクセスできます。
- ファイルの元のバージョンを保持し、リンクがファイルの最新バージョンを指していることを確認する場合。 これが機能するのは、ファイルを同じファイル名を持つ別のファイルに置き換えた後でも、シンボリックリンクがアクティブなままであるためです。
Linuxプログラムは、ユーザーが使用されているコードのバージョンを知る必要がないように、エイリアスとしてシンボリックリンクを使用します。
# which python
/usr/bin/python
# ls -l /usr/bin/python
lrwxrwxrwx. 1 root root 7 Feb 21 13:38 /usr/bin/python -> python2
結論
シンボリックリンクと標準のショートカットは似ていますが、2つの間にいくつかの違いがあります。
Windowsにあるような標準のショートカットは、特定のディレクトリ、ファイル、またはアプリケーションを指す通常のファイルです。 このショートカットは通常、任意の場所に作成できるアイコンとして表示され、クリックすると元のファイル、ディレクトリ、またはアプリケーションが開きます。
シンボリックリンクは、実際には機能的な意味で元のファイルを表します。 これは、ファイルなどのオブジェクトの直接の代替品です。 Linuxシステムは、Linuxシンボリックリンクをターゲットオブジェクトであるかのように読み取ります。 通常のショートカットは、ファイルまたはディレクトリを参照するだけで、他には何もしません。