はじめに
Linuxのファイルシステムにおいて、ファイルやディレクトリを削除する主要なコマンドはrmですが、unlinkコマンドもファイルの削除、特にハードリンクの解除という特定の目的で使用されます。
unlinkコマンドの基本的な機能は、ファイルシステムから指定されたファイル名のディレクトリ・エントリ(リンク)を一つ削除することです。このコマンドは、技術的にはrmコマンドが実行している操作の根幹であり、rmコマンドは内部でunlinkシステムコールを利用しています。
LPICレベル1の試験対策としては、unlinkがハードリンクの概念と密接に結びついていること、そしてrmとの関係を理解することが重要です。この記事では、unlinkコマンドの基本的な使い方から、コマンド名の由来、そしてrmコマンドとの違いについて詳しく解説していきます。
unlinkコマンドの基本
まずは、unlinkコマンドの基本的な使い方と、その特徴を確認しましょう。
unlinkコマンドの書式
unlink ファイル名
- ポイント:
unlinkコマンドはオプションを受け付けません。- 一度に指定できるファイルは一つだけです。複数のファイルを削除したい場合は、それぞれに対して
unlinkを実行する必要があります。
unlinkの動作原理
unlinkコマンドは、指定されたファイル名と、そのファイルの実体(inode)との結びつきを断ち切ります。
- ハードリンクのカウントを減らす: ファイルのinodeには、そのファイルを参照している名前(ハードリンク)がいくつあるかを示すリンク数が保持されています。
unlinkを実行すると、このリンク数が1つ減少します。 - 実体の削除: リンク数がゼロになったとき、そのファイルの実体データがファイルシステムから解放され、完全に削除されます。
コマンド名の由来:なぜ「unlink」なのか?
unlinkコマンドの「unlink」は、英語の “un-“(解除) と “link”(リンク) を組み合わせた言葉で、「リンクを解除する」ことを意味します。
このコマンドの役割は、ファイル名とinodeの間のリンク(結びつき)を一つ解除するという、その機能そのものを直接的に表しています。
rmとunlinkの決定的な違い
| 項目 | unlinkコマンド | rmコマンド |
| オプション | 受け付けない。 | -i, -f, -r など多くのオプションを受け付ける。 |
| ファイル数 | 一度に一つだけ指定可能。 | 一度に複数のファイルやディレクトリを指定可能。 |
| ディレクトリ | ディレクトリは削除できない。ファイルのみ。 | -rオプションでディレクトリを削除できる。 |
| 内部処理 | 削除の基本となるシステムコールを直接呼び出す。 | unlinkシステムコールを利用しつつ、オプション処理(確認、再帰など)を加える。 |
実際には、rmコマンドのほうが機能が豊富で使い勝手が良いため、一般のユーザーはrmを使用し、unlinkはスクリプト内やシステムの低レベルな処理で使われることが多いです。
実践例:ハードリンクの解除
unlinkコマンドは、ハードリンクの仕組みを理解するのに役立ちます。
準備: fileAを作成し、linkAとしてハードリンクを作成します。
touch fileA
ln fileA linkA # ls -l もしくは llで見ると、リンク数が2になっている

unlinkで一つ目のリンクを解除:
unlink linkA

結果: linkAという名前は消えましたが、fileAという名前と実体は残ります。
ls -l fileA もしくは ll fileA # リンク数が1になっている

unlinkで二つ目のリンクを解除:
unlink fileA

結果: リンク数が0になり、ファイルの実体も削除されます。

LPIC対策としてのポイント
unlinkコマンドに関するLPICの出題傾向として、以下の点を確実に押さえておきましょう。
- ハードリンクの概念:
unlinkが実行されるのは、ファイルを削除するのではなく、ファイルへのリンクを一つ削除する行為であり、最後のリンクが削除されたときに初めてデータが解放されること。 rmとの関係:rmコマンドの内部処理は、実質的にunlinkシステムコールに基づいていること。- 制限:
unlinkはディレクトリを削除できないこと、そしてオプションがないことを理解しておくこと。
まとめ
今回は、ファイル名とinodeの結びつきを解除するunlinkコマンドについて、その基本的な使い方からコマンド名の由来、そしてrmコマンドとの違いまでを詳しく解説しました。unlinkは、Linuxファイルシステムの仕組み、特にハードリンクの挙動を理解する上で、非常に重要なコマンドです。
LPICレベル1の試験対策としては、ハードリンクのリンク数を減少させるというunlinkの核心的な役割をしっかりとマスターしておきましょう。



コメント