ln
コマンドオプション一覧
オプション | 説明 |
---|---|
(なし) | ハードリンクを作成する(デフォルトの動作) |
-s, –symbolic | シンボリックリンク(ソフトリンク)を作成する |
-f, –force | 既存のリンク名やファイルがあれば、強制的に上書きする |
-i, –interactive | 上書き前に確認する |
-v, –verbose | リンク作成時に詳細情報(リンク元とリンク先)を表示する |
-b, –backup | 上書きされるファイルのバックアップを作成する |
–backup=方法 | バックアップの方法を指定する(numbered, existing, simple など) |
-S 接尾辞, –suffix=接尾辞 | バックアップファイルの末尾に付ける文字列を指定する |
-d, -F, –directory | ディレクトリのハードリンクを作成する(スーパーユーザーのみ) |
-n, –no-dereference | リンクの作成場所がシンボリックリンクのディレクトリだった場合、そのものを置き換える |
-L, –logical | 対象がシンボリックリンクの場合、リンクを辿る |
-P, –physical | シンボリックリンク自体へのハードリンクを作成する |
-r, –relative | 相対パスのシンボリックリンクを作成する |
-T, –no-target-directory | リンク先を常に通常ファイルとして扱う |
-t DIR, –target-directory=DIR | 指定したディレクトリにリンクを作成する(DIR部分はディレクトリ名) |
lnコマンドとは?
lnコマンドは、Linuxでファイルやディレクトリの「リンク」を作成するための基本コマンドです。
主に「ハードリンク」と「シンボリックリンク(ソフトリンク)」の2種類を作成でき、ファイルの別名やショートカットのような役割を持ちます。
ハードリンクは同じファイルを複数の名前で管理でき、どちらからも内容を編集できます。
一方、シンボリックリンクは元ファイルへの参照情報を持つため、元ファイルが削除されるとリンクが切れます。
lnコマンドは「ln [オプション] 対象ファイル リンク名」の形式で使い、-sオプションを付けるとシンボリックリンクを作成します。
ファイル管理や運用の効率化に欠かせないコマンドです。
ハードリンクとシンボリックリンクの違い
Linuxのlnコマンドでは「ハードリンク」と「シンボリックリンク(ソフトリンク)」の2種類のリンクを作成できます。
1. ハードリンクの作成と特徴
ハードリンクは、元ファイルと同じinode(ファイルの実体情報)を共有します。
つまり、どちらのファイル名からも同じ内容にアクセスでき、どちらか一方を削除しても、もう一方から内容を読み書きできます。
ln original.txt hardlink.txt
inode番号を確認するには以下のコマンドを使います。
ls -li original.txt hardlink.txt
両ファイルのinode番号が同じであることが分かります。
ハードリンクはファイルシステム内でのみ作成でき、ディレクトリには通常作成できません。
2. シンボリックリンクの作成と特徴
シンボリックリンクは、元ファイルへのパス情報を持つ新しいファイル(ショートカット)です。
元ファイルが削除されるとリンクは切れ、アクセスできなくなります。
ln -s original.txt symlink.txt
lsコマンドで確認すると、「symlink.txt -> original.txt」と表示され、リンクであることが分かります。
ls -l symlink.txt
シンボリックリンクはファイルやディレクトリどちらにも作成でき、異なるファイルシステム間でも利用可能です。
3. 挙動の違いをコマンドで確認
echo "sample" > test.txt
ln test.txt hardlink.txt
ln -s test.txt symlink.txt
この状態でtest.txt
を削除すると、hardlink.txt
からは内容を参照できますが、symlink.txt
はリンク切れとなり内容を取得できません。
4. 違いのまとめ
- ハードリンクはinodeを共有し、元ファイル削除後も内容にアクセス可能。
- シンボリックリンクはパス情報のみを持ち、元ファイル削除でリンク切れ。
- ハードリンクは同一ファイルシステム内のみ、シンボリックリンクは異なるファイルシステム間も可。
- シンボリックリンクはディレクトリにも作成可能。
lnコマンドのよく使うオプション一覧と使い方まとめ
lnコマンドは、Linuxでファイルやディレクトリのリンクを作成する際に欠かせないコマンドです。
ここでは、よく使われる主要オプションとその使い方を、コマンド例とともに詳しく解説します。
1. ハードリンク作成(オプションなし)
ハードリンクは、同じファイルを異なる名前で参照したい場合に使います。
ln file.txt hardlink.txt
このコマンドで、file.txt
のハードリンクhardlink.txt
が作成されます。
2. シンボリックリンク作成(-s, –symbolic)
シンボリックリンクは、ショートカットのように元ファイルへの参照を作成します。
ln -s file.txt symlink.txt
このコマンドで、file.txt
へのシンボリックリンクsymlink.txt
ができます。
3. 詳細表示(-v, –verbose)
リンク作成時に、どのファイルからどのリンクを作ったか詳細を表示します。
ln -v file.txt hardlink.txt
4. 強制上書き(-f, –force)
既に同名のファイルやリンクが存在する場合、確認なしで強制的に上書きします。
ln -f file.txt hardlink.txt
上書きしたい場合に便利ですが、誤操作に注意が必要です。
5. 上書き時に確認(-i, –interactive)
上書き前に「置き換えますか?」と確認してくれます。
ln -i file.txt hardlink.txt
6. バックアップ作成(-b, –backup, –backup=CONTROL, -S)
上書きされるファイルのバックアップを自動で作成します。
ln -b file.txt hardlink.txt
デフォルトではhardlink.txt~
のように末尾に「~」が付いたバックアップができます。
バックアップの末尾を変更する場合は、
ln -b -S _bk file.txt hardlink.txt
のように-S
オプションを使います。
7. ディレクトリへのリンク作成(-t, –target-directory)
複数ファイルのリンクをまとめてディレクトリに作成したい場合に使います。
ln -s file1.txt file2.txt -t dir/
このコマンドで、dir/
内にfile1.txt
とfile2.txt
のシンボリックリンクが作成されます。
8. その他の便利なオプション
-n, --no-dereference
:リンク先がシンボリックリンクの場合でも、そのものを置き換えます。-r, --relative
:相対パスでシンボリックリンクを作成します。
lnコマンドのオプションは組み合わせて使うことも可能ですが、-f
と-i
は同時に使うと後に記述した方が優先されるため注意が必要です。
lnコマンドの実用例
lnコマンドは、ファイルやディレクトリの管理を効率化するために多彩な使い方が可能です。
ここでは、実際の現場で役立つlnコマンドの応用例を紹介します。
1. ワイルドカードを使って一括リンク作成
パターンマッチ(ワイルドカード)を使えば、特定のディレクトリ内の全ファイルのリンクをまとめて作成できます。
ln docs/* backup_docs/
この例では、docs
ディレクトリ内のすべてのファイルのハードリンクをbackup_docs/
ディレクトリに一括で作成します。
2. ディレクトリへのシンボリックリンク作成
ディレクトリ自体へのシンボリックリンクを作成することで、長いパスやよく使うディレクトリへのアクセスを簡単にできます。
ln -s /var/log/nginx ~/nginx_log
このコマンドで、/var/log/nginx
ディレクトリへのシンボリックリンクnginx_log
がホームディレクトリに作成されます。
4. シンボリックリンクの相対パス指定
相対パスでシンボリックリンクを作成したい場合は、-r
オプションを活用します。
ln -sr ../data/sample.csv sample_link.csv
このコマンドで、現在のディレクトリから見た相対パスでsample.csv
へのシンボリックリンクが作成されます。
lnコマンドのよくあるエラーの対処法
lnコマンドを利用する際には、さまざまなエラーやトラブルが発生することがあります。
ここでは、代表的なエラーとその解決手順をコマンド例とともに解説します。
1. 「File exists」エラーの対処法
リンク先ファイルがすでに存在している場合、
ln: failed to create symbolic link 'xxx/yyy': File exists
と表示されます。この場合、既存ファイルを削除してから再度リンクを作成するか、-f
(強制上書き)や-i
(確認付き上書き)オプションを利用します。または、別のリンク名を指定して作成することも有効です。
2. 「cannot find file name」や「No such file or directory」エラーの解決
リンク元のファイルが存在しない場合や、パスが間違っている場合に発生します。
ファイルの存在を確認し、絶対パスで指定することで解決できることが多いです。
ls /path/to/sourcefile
で存在を確認し、
ln -s /絶対パス/元ファイル /絶対パス/リンク先
のように絶対パスで再実行します。
3. 「シンボリックリンクのレベルが多すぎる」エラー
シンボリックリンク同士が循環参照している場合や、リンクが多段になりすぎている場合に発生します。
リンク先が正しいか、循環していないかを確認し、不要なリンクを削除して正しいリンクを作り直します。
4. 「permission denied」や「適切な許可を受けていない」場合の対処
リンク作成先やリンク元に書き込み権限がない場合に発生します。
ls -l
でパーミッションを確認し、必要に応じてchmod
やsudo
を使って権限を変更します。
sudo ln -s /path/to/source /path/to/link
5. 「target directory name on different file system than source name」エラー
ハードリンクは異なるファイルシステム間では作成できません。この場合はシンボリックリンク(-sオプション)を利用します。
6. 「source name and target name are identical」エラー
リンク元とリンク先が同一ファイルの場合に発生します。リンク先のパスやファイル名を見直し、重複しないように指定してください。
7. 「target name must be a directory」エラー
複数ファイルをリンクする際に、リンク先がディレクトリでない場合に発生します。リンク先がディレクトリであることを確認し、必要に応じてディレクトリを作成してください。
まとめ
lnコマンドは、Linuxでのファイルやディレクトリ管理を効率化するために欠かせないツールです。
ハードリンクとシンボリックリンクの違いを理解し、用途に応じて使い分けることで、バックアップやショートカット作成、運用管理がより柔軟になります。よく使うオプションやエラー対処法を身につけておくことで、トラブル時も迅速に対応できるようになります。
lnコマンドを活用して、Linux環境での作業効率を大幅に向上させましょう。
関連記事
- 【 file 】コマンドオプションをパッと見出来る一覧&完全ガイド!
- 【 kill 】コマンドオプションをパッと見出来る一覧&完全ガイド!
- 【 more 】コマンドオプションをパッと見出来る一覧&完全ガイド!
- 【 head 】コマンドオプションをパッと見出来る一覧&完全ガイド!
- 【 chown 】コマンドオプションをパッと見出来る一覧&完全ガイド!
- 【 chmod 】コマンドオプションをパッと見出来る一覧&完全ガイド!
- 【 mkdir 】コマンドオプションをパッと見出来る一覧&徹底解説!
- 【 cp 】コマンドオプションをパッと見出来る一覧&徹底解説!
- 【 ps 】コマンドオプションをパッと見出来る一覧&徹底解説!
- 【 grep 】コマンドオプションをパッと見出来る一覧&徹底解説!
- 【 cat 】コマンドオプションをパッと見出来る一覧&徹底解説!
- 【 ls 】コマンドオプションをパッと見出来る一覧&徹底解説!