コマンド
unlink
ファイル・シンボリックリンクを削除する
最終更新
UNIX/Linux の unlink コマンドは、ファイルやシンボリックリンクを削除するコマンドである。unlink コマンドではディレクトリは削除できない。
rm コマンドとは異なり、複数ファイルを指定することはできない。rm コマンドは rm -r でディレクトリも削除できるが、unlink コマンドではディレクトリは削除できない。
●unlink コマンドで削除できるもの
unlink コマンドで削除できるもの・できないものは下記である。
ファイル
| 削除できる
|
デバイスファイル
| 削除できる
|
ディレクトリ
| 削除できない
|
シンボリックリンク
| 削除できる
|
名前付きパイプ (FIFO)
| 削除できる
|
UNIX ドメインソケット
| 削除できる
|
●unlink という名称について
ネット上で unlink コマンドに関する記述を見ると、「シンボリックリンクを削除するコマンド」と思っていたり、「シンボリックリンクだけを削除するがファイルは削除できない」と勘違いしていた人がいるようである。
なぜだろうかと考えると、おそらくコマンド名に "link" と書いてあるからであろう。
なぜ unlink コマンドが unlink という名前かと言うと、UNIX/Linux においてはファイルやシンボリックリンクを削除するシステムコールは unlink(2) だからである。システムコール unlink(2) を呼ぶコマンドなので、unlink コマンドという名前になったわけである。
システムコール unlink(2) はディレクトリは削除できないので、unlink コマンドでもディレクトリは削除できない (ディレクトリを削除するシステムコールは rmdir(2) である)。
ではなぜファイルを削除するシステムコールが delete や remove などではなく、unlink という名前かと言うと、もともとの unlink(2) は下記のような手順を踏むからである。
- ディレクトリエントリから該当ファイルのエントリを削除
- リンク数を 1減算する
リンク数とは、ハードリンク作成時にカウントアップされるアレのことである。詳細は ln コマンドを参照。
●関連コマンド
ファイルの削除については rm コマンドを使うほうが一般的ではある (unlink コマンドを使うなと言っているわけではない)。
ディレクトリの削除は、rmdir コマンドを使う。
関数
unlink
ファイルを削除するシステムコール
unlink ではディレクトリの削除はできない。ディレクトリは rmdir を使わないと消せない。
ファイルの作成は、open で行う。