1. 概要

このチュートリアルでは、Linuxでシンボリックリンクを作成するさまざまな方法について説明します。 これらはソフトリンクとも呼ばれ、ハードリンクと一緒にlnコマンドを使用して作成できます。

これに飛び込む前に、ソフトリンクとハードリンクの概要を必ず確認してください。

この記事の例では、Bashでテストされ、すべてのPOSIX互換シェルで機能するコマンドを使用していることに注意してください。

2. 名前でシンボリックリンクを作成する 

lnは4つの形式で提供されると考えることができます。

最初の形式では、作成するターゲットとリンクの両方に明示的に名前を付ける必要があります。

ln -s file.txt link.txt

このコマンドを使用して、file.txtファイルを指すlink.txtというシンボリックリンクを作成しました。 コマンドls -l を使用すると、次の結果を確認できます。

-rw-rw-r--. 1 vagrant vagrant 10 Apr 12 15:23 file.txt
lrwxrwxrwx. 1 vagrant vagrant  8 Apr 12 15:23 link.txt -> file.txt

同じ方法でディレクトリへのシンボリックリンクを作成できます。

ln -s dir link

これは他のフォームにも当てはまります。

すべてのフォームの中で、これは同じディレクトリにあるファイルへのリンクを作成できる唯一のフォームです。 これは、2番目のフォームを見ると明らかになります。

3. 現在の作業ディレクトリにシンボリックリンクを作成する

この秒は、4つの形式すべての中で最も短いものです。 リンク名を省略すると、 ln は、ターゲットと同じ名前のリンクを現在の作業ディレクトリに作成します。 

たとえば、次のコマンドを使用して、 / var /logを指すlogというリンクを現在のディレクトリに作成できます。

ln -s /var/log

リンクは次のようになります。

lrwxrwxrwx. 1 vagrant vagrant 8 Apr 12 15:35 log -> /var/log

/ var ディレクトリ内から実行した場合、このコマンドは機能しないことに注意してください。 cd/var に入れて、もう一度試してみましょう。

cd /var/
ln -s /var/log

私たちのシステムは、ファイルがすでに存在していると文句を言います:

ln: failed to create symbolic link ‘./log’: File exists

4. 現在の作業ディレクトリに複数のシンボリックリンクを作成する

残りの2つのフォームは、すべて一度に複数のリンクを作成するためのものです。

1つのステートメントでファイルとディレクトリをリンクしましょう。

ln -s /etc/hosts /var/log /home/vagrant

このコマンドを使用して、ファイルとディレクトリをそれぞれ指す2つのリンクを作成しました。 これらはターゲットディレクトリ、この場合は / home /vagrantにあります。

lrwxrwxrwx. 1 vagrant vagrant 10 Apr 12 15:50 hosts -> /etc/hosts
lrwxrwxrwx. 1 vagrant vagrant  8 Apr 12 15:50 log -> /var/log

5. ターゲットディレクトリに複数のシンボリックリンクを作成する

4番目の形式は3番目の形式と非常によく似ています。 唯一の違いは、 -t パラメータを使用して、リンクを作成するディレクトリを最初に指定することです。

ln -s -t /home/vagrant /etc/hosts /var/log

結果は、3番目の形式を使用した場合と同じです。

lrwxrwxrwx. 1 vagrant vagrant 10 Apr 12 15:50 hosts -> /etc/hosts
lrwxrwxrwx. 1 vagrant vagrant  8 Apr 12 15:50 log -> /var/log

6. 結論

学習したように、lnを使用してシンボリックリンクを作成できる4つの形式があります。

すべてのフォームの中で、最初のフォームは最も明示的で、同じ場所にあるファイルまたはディレクトリへのリンクを許可する唯一のフォームです。