はじめに
今回は Linux コマンドの rm(1) と unlink(1) の違いについて記載します。
コマンドの後ろについているカッコ付の数字は、manページの章立てに該当します。
(1)は1章を意味しており、「汎用コマンド」ということです。
1 汎用コマンド
https://ja.wikipedia.org/wiki/Man%E3%83%9A%E3%83%BC%E3%82%B8
2 システムコール
3 ライブラリ関数、特に標準Cライブラリ関数
4 特殊なファイル(主に/devにあるデバイス)とドライバ
5 ファイル形式とその使用法
6 ゲームとスクリーンセーバー
7 その他
8 システム管理コマンドとデーモン
rmコマンド と unlinkコマンドの違い
いずれもコマンドの中でunlink(2)(システムコール)を呼び出して、ファイルを削除しています。ファイルを削除するという目的ではrmコマンド、unlinkコマンドいずれも同じですが、ファイルを特定して削除する場合はunlinkコマンド、複数指定はrmコマンドを使うと速いといったところですね。
rmコマンド
- 多機能
- オプション指定ができる
- ファイルやディレクトリの削除ができる
- ワイルドカード指定できる
- ディレクトリを再帰できる
- 多機能ゆえ、unlinkよりも処理が遅い
unlinkコマンド
- シンプル
- オプション指定がない
- ファイルは削除できるがディレクトリは削除できない。
- ワイルドカード指定できない
- ディレクトリを再帰できない
- シンプルゆえ、rmよりも処理が速い
参考リンク
参考リンクは以下を参照してください。
mコマンドのmanページ
rm – ファイルやディレクトリの削除を行う
https://manpages.ubuntu.com/manpages/jammy/ja/man1/rm.1.html
unlinkコマンドのmanページ
unlink – unlink 関数を呼び出し指定されたファイルを削除する
https://manpages.ubuntu.com/manpages/jammy/ja/man1/unlink.1.html
unlinkシステムコールのmanページ
unlink, unlinkat – 名前を削除し、場合によってはそれが参照してい
https://manpages.ubuntu.com/manpages/jammy/ja/man2/unlink.2.html
さいごに
今回は Linux コマンドの rm(1) と unlink(1) の違いについて記載しました。
参考になれば幸いです。