UNIX/Linuxの部屋 コマンド:unlink

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド unlink ファイル・シンボリックリンクを削除する このエントリーをはてなブックマークに追加

最終更新


UNIX/Linux の unlink コマンドは、ファイルやシンボリックリンクを削除するコマンドである。unlink コマンドではディレクトリは削除できない。



unlink コマンドの基本的な使い方
unlink コマンドは、削除したいファイルやシンボリックリンクを引数に指定する。
% unlink file.txt
→ file.txt が削除される

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 コマンドを使う。
>> Linuxオンラインマニュアル(man) Linux unlink(1)
>> Linuxオンラインマニュアル(man) Linux unlink(2)

関数 unlink ファイルを削除するシステムコール このエントリーをはてなブックマークに追加

unlink ではディレクトリの削除はできない。ディレクトリは rmdir を使わないと消せない。
ファイルの作成は、open で行う。