(最終更新月:2023年3月)
✓当記事はこのような方に向けて書かれています
「lnコマンドでファイルをリンクしたい」
「lnコマンドの使い方がよくわからないのだろうか?」
「lnコマンドのオプションについて知りたい」
✓当記事では以下をお伝えします
- lnコマンドとは
- lnコマンドを使う際の基本的な構文とオプション
- lnコマンドの具体的な使用例とその応用演習
当記事では、lnコマンドの基本についてはもちろん、初心者にもわかりやすい操作方法について詳しく解説しています。
ぜひ最後までご覧ください。
lnコマンドで知っておくべき基本事項
lnコマンドで知っておくべき基本事項についてご紹介します。
lnコマンドの具体例を見る前に、簡単な基本を覚えておきましょう。
- lnコマンドとは?
- lnコマンドの基本構文:シンボリックリンク
- lnコマンドの基本構文:ハードリンク
- シンボリックリンクについての詳しい解説
- ハードリンクについての詳しい解説
lnコマンドとは何ですか?
lnコマンドは、ファイルのシンボリックリンクまたはハードリンクの作成を可能にするユーティリティです。
シンボリックリンクは、ファイルやディレクトリに対するポインターのようなもので、実体の場所を指し示す代わりに、別の場所への参照を提供します。
ハードリンクは、同じファイルやディレクトリに対して別の名前を作成し、同じファイルやディレクトリを複数の場所で参照できるものです。
lnコマンドの基本構文:シンボリックリンク
ln
コマンドの基本的な構文は次のとおりです。
ln [オプション] ソースファイル [リンク名]
ここで、ソースファイル
はリンク元のファイルまたはディレクトリであり、リンク名
は作成するリンクの名前です。
リンク名
を省略すると、ソースファイル
と同じ名前のリンクが作成されます。
たとえば、itc.txt
というファイルに対するシンボリックリンクitclink
を作成する場合、次のようにコマンドを実行します。
$ ln -s
itc.txt itclink
このコマンドにより、itclinkという名前のシンボリックリンクが作成され、実体としてはitc.txt
を指し示すことになります。
リンクの確認は、「ls -l」コマンドで可能です。
$ ls -l
total 0
-rw-r--r-- 1 root root 0 Mar 29 23:53 itc.txt
lrwxrwxrwx 1 root root 7 Mar 29 23:54 itclink -> itc.txt
lnコマンドの基本構文:ハードリンク
同じファイルに対するハードリンクを作成する場合は、次のようにコマンドを実行します。
ln itc.txt
itchard
このコマンドにより、itchardという名前のハードリンクが作成され、実体としてはitc.txtを指し示すことになります。
ハードリンクを作成すると以下のようになります。
$ ls -l
total 0
-rw-r--r-- 2 root root 0 Mar 29 23:53 itc.txt
-rw-r--r-- 2 root root 0 Mar 29 23:53 itchard
lrwxrwxrwx 1 root root 7 Mar 29 23:54 itclink -> itc.txt
ln
コマンドは、シンボリックリンクやハードリンクを作成するために使用される非常に重要なコマンドの1つです。
シンボリックリンクについての詳しい解説
シンボリックリンクとは、Linuxシステムにおいて、あるファイルやディレクトリに対して、別の場所にあるファイルやディレクトリを参照するための仕組み。
通常のファイルとして作成されますが、実際のデータを持たず、単なる「ショートカット」のようなものといえます。
例えるなら、元ファイル・ディレクトリをコピーするのではなく、そこまでワープできる入り口を作るようなものです。
活用するメリットは以下のとおりです。
- 複数の場所から同じファイルやディレクトリにアクセスすることができる
- 長いパス名を短くすることもできる
ただし、元のファイルやディレクトリを削除すると、シンボリックリンクも無効になることは覚えておきましょう。
ハードリンクについての詳しい解説
ハードリンクは、Linuxシステムにおいて、同じファイルを複数名で参照できる仕組みです。
元のファイルと同じi-nodeと呼ばれるファイルのメタデータを参照するため、元のファイルが変更されると、ハードリンクを経由してアクセスした場合でも最新のデータを参照できます。
ハードリンクを使用することで、1つのファイルに複数の名前を付けることができ、複数のプロセスから同じファイルにアクセスできるようになるのです。
ただしハードリンクを作成する場合には、以下の注意が必要となります。
- ハードリンクを経由して元のファイルを削除すると、ハードリンクを経由してアクセスしたファイルも同時に削除される
- ハードリンクを使用すると、ファイルの参照回数が増えるため、ファイルの消去が行われない限り、ストレージ容量が増えてしまう
lnコマンドのオプション一覧
lnコマンドの一覧について、詳しく見ていきます。
コマンドを使いこなすことで、できることの幅が広がるのです。
- シンボリックリンクを作成:-s
- リンクの強制削除:-f
- シンボリックリンクを逆参照しない:-n
- バックアップを作る:-b
- サフィックスを指定したバックアップ作成:-S
シンボリックリンクを作成:-s
-sオプションを使うと、シンボリックリンクを作成できます。
次のようなコマンドになります。
ln -s リンク元ファイル リンク名
リンクの強制削除:-f
-fは、指定したリンクを強制的に削除するもの。
ln -f ファイル名 リンク名
$ ln -s itc.txt itc
$ ls -l
total 4
lrwxrwxrwx 1 hnish hnish 7 Mar 30 21:01 itc -> itc.txt
-rw-r--r-- 1 hnish hnish 66 Mar 16 09:27 itc.txt
hnish@DESKTOP-AN1L71S:~/doc$ ln -f itc.txt itc
hnish@DESKTOP-AN1L71S:~/doc$ ls -l
total 8
-rw-r--r-- 2 hnish hnish 66 Mar 16 09:27 itc
-rw-r--r-- 2 hnish hnish 66 Mar 16 09:27 itc.txt
シンボリックリンクを逆参照しない:-n
-iオプションを使うと、シンボリックリンクを逆参照しないため、通常のファイルのように扱われます。
ln -n リンク元ファイル リンク名
$ ln -n itc.txt itc
$ ls -l
total 0
-rw-r--r-- 2 root root 0 Mar 30 11:37 itc
-rw-r--r-- 2 root root 0 Mar 30 11:37 itc.txt
バックアップを作る:-b
-bオプションは、ファイルが存在する場合、リンクを作る前にバックアップが作られるもの。
バックアップファイルの前には「~」が付きます。
#存在するファイルを指定する
$ln -b itc.txt itc
$ls -l
total 0
-rw-r--r-- 4 root root 0 Mar 30 11:37 itc
-rw-r--r-- 4 root root 0 Mar 30 11:37 itc.txt
-rw-r--r-- 4 root root 0 Mar 30 11:37 itc~
サフィックスを指定したバックアップ作成:-S
-Sオプションを使うと、「~」ではなくお好きなサフィックスでバックアップが作れます。
ln -S お好きなサフィックス リンク元 リンク先
$ ln -S _testbak itc.txt itc
$ ls -l
total 20
-rw-r--r-- 5 hnish hnish 5 Mar 30 21:04 itc
-rw-r--r-- 5 hnish hnish 5 Mar 30 21:04 itc.txt
-rw-r--r-- 5 hnish hnish 5 Mar 30 21:04 itc_testbak
まとめ:lnを活用するとリンクで効率良く作業できる
当記事の内容をまとめます。
- lnコマンドは特定のファイルへのリンクを作れるコマンド
- シンボリックリンクとは実体がなく本体を指し示すもの
- ハードリンクとは本体のi-nodeを指し示すショートカットのようなもの
lnコマンドはあまり使う機会が無いかもしれませんが、知っておくととても便利です。
Windowsを使っている方ならショートカットのようにして使えるものと覚えておきましょう。
うまく活用して、作業効率の向上を目指してください。