更新日:
【IT用語】 rmとは?基礎からオプションまで実践形式で徹底解説!
rmはファイルを削除するコマンドです。メリットとデメリットをしっかりと理解して使えばターミナル操作のとても強い味方になります!
1
rm ファイル名
rm
コマンドは、みなさんがFinderで行っている次の動画のような「ゴミ箱に入れる」ことをターミナルからも行えるようにしたものです。
「Finderからファイルやディレクトリを削除している」と想像してもらえれば分かり易いですが、細かい点で言うと「Finderからの削除」と「rmコマンド」には次のような違いがあります。
Finderでゴミ箱に入れる | Finderで完全に削除する | rmコマンド | |
---|---|---|---|
削除可能なファイル | |||
削除したファイルの復元 |
つまりrm
コマンドは、どんなファイルやディレクトリも削除できるけど、一度削除してしまったら元には戻せない、とても強力なコマンドなのです。
基本的な使い方から、状況に応じたrm
のふるまい方の違い、さまざまなオプションまでを一緒に見ていきながら、rm
コマンドを味方につけましょう!
rmコマンドとは
rm
コマンドはファイルやディレクトリを削除するためのコマンドです。
この記事では、基本的な使い方、削除に工夫が必要なファイル、オプション、オプションの組み合わせの順番に解説していきます。
rmコマンドの基本的な使い方
この章では、実際にターミナルを操作しながら、rm
コマンドの基本的な使い方を確認していきましょう!
すでに説明したように、rm
コマンドで削除したファイルは元に戻せません。うっかり大事なファイルを消してしまわないように、まずは説明用のディレクトリとファイルを作成します。
1
2
3
4
5
$ cd ~/Desktop # Desktopへ移動
$ mkdir sandbox # sanboxというディレクトリを作成
$ cd sandbox # sandboxへ移動
$ pwd # 移動できたか確認
/Users/ユーザー名/Desktop/sandbox
続いて、作成したディレクトリの中にファイルを作成します。
1
2
3
$ touch file1 file2 file3 file4 file5 # ファイルを5つ作成
$ ls # 作成されたか確認
file1 file2 file3 file4 file5
この時点で、ディレクトリとファイルをFinderで確認すると次のようになっています。
いよいよ、rm
コマンドを使ってファイルを削除していきます。
カレントディレクトリ直下のファイルを削除したい場合は、次のようにrm
の後にファイル名
を指定します。
1
2
3
$ rm file1 # file1を削除
$ ls # 削除されたか確認
file2 file3 file4 file5
ls
コマンドで確認すると、指定したファイルが削除されていますね。
次のように、絶対パス
か相対パス
でファイル名を指定すれば、カレントディレクトリに関係なくファイルを削除することもできます。
1
2
3
4
5
6
7
$ cd # ホームディレクトリへ移動
$ rm /Users/ユーザー名/Desktop/sandbox/file2 # 絶対パスでfile2を削除
$ rm Desktop/sandbox/file3 # 相対パスでfile3を削除
$ cd Desktop/sandbox # sandboxへ戻る
$ ls # 削除されたか確認
file4 file5
パスで指定したファイルも削除されていますね。
またスペース区切りで削除したいファイルを複数指定することで、1行で複数のファイルを削除できます。
一度に複数のファイルを削除できることは便利ですが、ファイル名を間違えて意図しないファイルを削除しても復元はできないので、使うときはファイル名を間違えていないか注意しましょう!
1
2
3
$ rm file4 file5 # file4とfile5を削除
$ ls # 削除されたか確認
# 何も出力されない
これで、作成したファイルをすべて削除することができましたね。
ここまでの説明では、rm
コマンド実行直後に何も文字が出力されなかったので、不安に感じたかもしれません。rm
コマンドは指定したファイルを正常に削除できた場合は、ターミナルに何も出力しません。つまり、rm
コマンド実行後に何も出力がなければ、指定したファイルは正常に削除されています。
次の動画のように、Finderとターミナルを並べると、rm
コマンドで削除したファイルがFinderからも消えているのが分かります。
削除に工夫が必要なファイル
これまでの説明では、rm
コマンドにファイル名かパスを指定するだけで、簡単にファイルを削除することができました。しかし、次の種類のものは、これまでの方法だけでは削除することができないので工夫が必要になります。
どのようにすれば削除できるか一緒に見ていきましょう!
ディレクトリ
rm
コマンドでディレクトリを削除する方法をみていきましょう。
まずは説明用のディレクトリを作成します。
1
2
3
$ mkdir test_dir # test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
それでは、これまでと同じ方法でディレクトリが削除できるか試してみましょう。
1
2
3
4
5
$ rm test_dir # test_dirを削除できるか試す
rm: test_dir: is a directory
$ ls # 削除されたか確認
test_dir
ls
コマンドを実行するとtest_dir
と出力されてしまったので、ディレクトリが削除できていませんね。
rm
コマンドはディレクトリを指定すると、rm: 指定したディレクトリ名: is a directory
(日本語訳: 「指定したディレクトリ名」はディレクトリです)
と出力して、ディレクトリを削除してくれません。
rm
コマンドでディレクトリを削除するためには、次のオプションを使用する必要があります。
ディレクトリの状態 | オプション |
---|---|
空のディレクトリ | rm -d: 空のディレクトリを削除する |
中身のあるディレクトリ | rm -r: ディレクトリを中身ごと削除する |
オプションの詳細については、rmコマンドのオプションで後ほど解説します。
また、空のディレクトリであればrmdir
というコマンドでも削除できます。ここではrmdir
コマンドを使って、作成した説明用のディレクトリを削除しておきましょう。
1
$ rmdir test_dir # ディレクトリを削除
名前にスペースを含んだファイル
rm
コマンドで名前にスペースを含んだファイルを削除する方法をみていきましょう。
まずは名前にスペースを含んだファイルを作成します。
1
2
3
4
$ touch 'pi ka.txt' # pi ka.txtというファイルを作成
$ touch 'wa ka.txt' # wa ka.txt というファイルを作成
$ ls # 作成されたか確認
pi ka.txt wa ka.txt
続いて、これまでと同じ方法でファイルが削除できるか試してみましょう。
1
2
3
4
5
6
$ rm pi ka.txt # 名前にスペースを含んだファイルを削除できるか試す
rm: pi: No such file or directory
rm: ka.txt: No such file or directory
$ ls # ファイルが削除されたか確認
pi ka.txt wa ka.txt
ls
コマンドを実行するとpi ka.txt
が出力されてしまったので、ファイルが削除できていませんね。
rm
コマンドはスペースを区切りとして認識するため、pi
とka.txt
という2つの別々のファイルを削除しようとしています。そのようなファイルは存在しませんから、No such file or directory
(日本語訳: そのようなファイルやディレクトリは存在しません)
と出力されてしまいます。
名前にスペースを含んだファイルを削除するには、次のようにクォーテーション(''
もしくは""
)で、ファイル名を括りましょう。
1
2
3
$ rm 'pi ka.txt' # シングルクォーテーション('')でくくる
$ ls # 削除されたか確認
wa ka.txt
または、スペースの手前にバックスラッシュ(\
)を加えることでも削除できます。
1
2
3
$ rm wa\ ka.txt #バックスラッシュ(\)をつける
$ ls # 削除されたか確認
# 何も出力されない
これで、名前にスペースを含んだファイルを削除することができました。
文字列で囲った場合(' ' )か(" " ) |
バックスラッシュ(\ )を使った場合 |
---|---|
rm 'pi ka.txt' (直感的にスペースをつけて削除できる。) |
rm pi\ ka.txt (スペースの手前にバックスラッシュ( \ )を加えることで削除できる。 ) |
書き込み権限がないファイル
rm
コマンドで書き込み権限がないファイルを削除する方法をみていきましょう。
まずは説明用のファイルを作成して、作成したファイルから書き込み権限を削除します。
1
2
$ touch file.txt # file.txtというファイルを作成
$ chmod u-w file.txt # file.txtから書き込み権限を削除
続いて、これまでと同じ方法でrm
コマンドにファイル名を指定します。実行すると、ターミナルがユーザーの入力待ちで一時停止の状態になります。
1
2
$ rm file.txt # 書き込め権限のないファイルを指定
override r--r--r-- pikawaka/staff for file.txt? # 入力待ちで一時停止
override ~中略~ for file.txt?
(日本語訳: file.txtの権限を無視しますか?)
と出力され、入力待ちになったら、焦らずにyesを意味するy
を入力してenter
キーを押しましょう。それから、ファイルが正常に削除されたか確認しましょう。
1
2
3
4
override r--r--r-- pikawaka/staff for file.txt? y # yと入力してenterを押す
$ ls # ファイルが削除されたか確認
# 何も出力されない
書き込み権限のないファイルでも、権限を無視して削除することができていますね。
書き込み権限がないディレクトリ内のファイル
rm
コマンドで書き込み権限がないファイルを削除する方法をみていきましょう。
まずは、説明用のディレクトリとファイルを作成し、作成したディレクトリから書き込み権限を削除します。
1
2
3
4
5
6
7
8
9
$ mkdir test_dir #test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
$ touch test_dir/file.txt # test_dir内にfile.txtというファイルを作成
$ ls test_dir # 作成されたか確認
file.txt
$ chmod u-w test_dir # test_dirから書き込み権限を削除
それでは、rm
コマンドを使ってファイルが削除できるか試してみましょう。
1
2
3
4
5
6
$ cd test_dir # test_dirへ移動
$ rm file.txt # file.txtが削除できるか試す
rm: file.txt: Permission denied
$ ls # 削除されたか確認
file.txt
ls
コマンドを実行するとfile.txt
と出力されてしまったので、ファイルが削除できていませんね。
書き込み権限のないディレクトリ内のファイルを削除しようとすると、rm: ファイル名: Permission denied
(日本語訳: 権限がありません)
と出力されて、ファイルを削除することができません。
書き込み権限のないディレクトリ内のファイルを削除する方法の1つは、rm
コマンドの手前にsudo
コマンドを付け加えることです。実行するとターミナルがユーザーの入力待ちで一時停止の状態になります。
1
2
$ sudo rm file.txt # file.txtを削除
Password: # 入力待ちで一時停止
Password:
と出力されて入力待ちになったら、焦らずにご自身のMacのパスワードを入力して、enter
キーを押しましょう。入力した文字はセキュリティ上、画面には表示されません。正しいパスワードを入力してenterキー
を押したら、ファイルが削除されたか確認しましょう。
1
2
3
Password: # パスワードを入力してenterを押す
$ ls # file.txtが削除されたか確認
# 何も出力されない
これで、書き込み権限のないディレクトリ内のファイルを削除することができました。
書き込み権限のないファイルを削除 | 書き込み権限のないディレクトリ内のファイルを削除 |
---|---|
rm file.txt (override r--r--r-- pikawaka/staff for file.txt?と聞かれて yを押すと削除できる) |
sudo rm file.txt (Password:と出力されて入力待ちになったら、 Macのパスワードを入力して削除できる ) |
最後に、説明用のディレクトリを削除しておきます。
1
2
$ cd .. # 親ディレクトリへ移動
$ rmdir test_dir # ディレクトリを削除
rmコマンドのオプション
この章では、rm
コマンドのオプションの中から、便利なオプションを取り上げて解説します。
オプション | 説明 |
---|---|
rm -d | 空のディレクトリを削除する |
rm -r | ディレクトリを中身ごと削除する |
rm -f | ファイル権限を無視して削除する |
rm -i | 削除するときに確認メッセージを表示する |
rm -v | 削除したファイル名を表示する |
rm -d: 空のディレクトリを削除
-d
オプションの特徴は、空のディレクトリを削除できるようになることです。
削除に工夫が必要なファイルで説明したように、オプションなしではディレクトリを削除することができませんでした。
実際にディレクトリを作成して、-d
オプションを使って削除してみましょう。
1
2
3
4
5
6
$ mkdir test_dir # test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
$ rm -d test_dir # test_dirを削除
$ ls # 削除されたか確認
問題なく削除することができましたね。
ちなみにディレクトリが空でない場合は、-d
オプションを使っても削除することはできません。
1
2
3
4
5
6
7
8
$ mkdir test_dir # test_dirというディレクトリを再び作成
$ touch test_dir/file.txt # test_dir内にfile.txtというファイルを作成
$ rm -d test_dir # test_dirを削除できるか試す
rm: test_dir: Directory not empty
$ ls # 削除されたか確認
test_dir
ls
コマンドを実行するとtest_dir
と出力されてしまったので、やはりディレクトリが削除できていませんね。
今度は、中身のファイルを削除してディレクトリを空にしてから、-d
オプションを使って削除をしてみましょう。
1
2
3
4
5
$ rm test_dir/file.txt # test_dir内のfile.txtを削除
$ rm -d test_dir # test_dirを削除
$ ls # 削除されたか確認
# 何も出力されない
中身を空にしてからであれば、問題なく削除することができました。
「空のディレクトリだと思っていたけど、実は重要な隠しファイルが入っていたことに気が付かなかった!」ということはよくあります。-d
オプションを頼れば、隠しファイルを誤って削除してしまうことも防げます。
rm -r: ディレクトリを中身ごと削除
-r
オプションの特徴は、ディレクトリを中身ごと削除できることです。
-d
オプションは中身のあるディレクトリを削除することはできませんでしたが、-r
オプションはディレクトリの中身があってもなくても削除することができます。
まずは、説明用のディレクトリとファイルを作成します。
1
2
3
4
5
6
7
$ mkdir test_dir # test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
$ touch test_dir/file.txt # test_dir内にfile.txtというファイルを作成
$ ls test_dir # 作成されたか確認
file.txt
続いて、-r
オプションを使って、作成したディレクトリを中身ごと削除してみましょう。
1
2
3
$ rm -r test_dir # test_dirを中身ごと削除
$ ls # 削除されたか確認
# 何も出力されない
-d
オプションでは削除できなかった、中身のあるディレクトリを削除することができました。
たくさんのファイルが格納されたディレクトリであっても、瞬時に削除することができて便利です。
rm -f: ファイル権限を無視して削除
-f
オプションの特徴は、書き込み権限がないファイルでもユーザーに確認を求めずに強制的に削除できることです。
実際に書き込み権限のないファイルを作成してから、-f
オプションを使って削除をしてみましょう。
1
2
3
4
5
6
7
8
9
$ touch file.txt # file.txtというファイルを作成
$ ls # 作成されたか確認
file.txt
$ chmod u-w file.txt # file.txtから書き込み権限を削除
$ rm -f file.txt # -fオプションを使ってfile.txtを削除
$ ls # 削除されたか確認
# 何も出力されない
特に確認を求められることもなく、削除することができましたね。
書き込み権限のないファイルをたくさん削除する必要があるときに、ファイルごとに確認されなくなるので便利です。
rm -i: 削除するときに確認メッセージを表示
-i
オプションの特徴は、削除するファイルごとに「本当に削除するか?」とユーザーに確認するメッセージが出力されることです。
説明用のファイルを作成してから、rm
コマンドに-i
オプションと作成したファイル名を指定します。今回の例では、ファイル名に任意の一文字を示すワイルドカードである?
を含めて指定してみましょう。実行すると、ターミナルがユーザーの入力待ちで一時停止の状態になります。
1
2
3
4
5
6
$ touch file1 file2 # ファイルを2つ作成
$ ls # 作成されたか確認
file1 file2
$ rm -i file? # fileの後に任意の1文字を含むファイルを削除
remove file1? # ユーザーの入力待ちで一時停止
remove file1?
と出力されて入力待ちになったら、焦らずにyesを意味するy
と入力してenter
キーを押しましょう。すると今度は、remove file2?
という出力がされて、再びターミナルがユーザーの入力待ちで一時停止の状態になります。
1
2
remove file1? y # yと入力してenterを押す
remove file2? # 再びユーザーの入力待ちで一時停止
今回は、noを意味するn
と入力してenter
キーを押してみましょう。それから、ファイルが削除されたか確認します。
1
2
3
remove file2? n # nと入力してenterを押す
$ ls # 削除されたか確認
file2
y
と入力したfile1
は削除され、n
と入力したfile2
は削除されませんでしたね。このように、確認メッセージにy
と答えればそのファイルは削除されて、n
と答えればそのファイルを取っておくことができます。
最後に、もう一度rm
コマンドに-i
オプションをつけて実行してみましょう。今度は確認メッセージにy
と答えてfile2
を削除してみましょう。
1
2
3
4
5
$ rm -i file? # fileの後に任意の1文字を含むファイルを削除
remove file2? y # yと入力してenterを押す
$ ls #削除されたか確認
# 何も出力されない
これで説明用のファイルをすべて削除することができました。
このように-i
オプションは、ファイル名にワイルドカード(*
や?
)を含めて指定したときなどに、意図していないファイルが削除されてしまう危険性を回避することができます。
rm -v: 削除したファイル名を表示
-v
オプションの特徴は、削除に成功したファイル名を出力することです。
説明用のファイルを作成してから、-v
オプションを利用してファイルを削除してみましょう。今回の例では、ファイル名に。任意の一文字を示すワイルドカードである?
を含めて指定してみましょう。
1
2
3
4
5
6
7
8
9
10
$ touch file1 file2 # ファイルを2つ作成
$ ls # 作成されたか確認
file1 file2
$ rm -v file? # fileの後に任意の1文字を含むファイルを削除
file1
file2
$ ls # 削除されたか確認
# 何も出力されない
説明用のファイルをすべて削除することができました。
このように、実際に削除されたファイル名を出力内容から確認することができるので、削除したファイル名を記録しておきたいときなどに便利です。
rmコマンドのオプションの組み合わせ
前章で紹介したオプションには、-r
のようにrm
コマンドの働きを強めるものや、-i
のように働きを和らげるものがありました。
この章ではオプションを組み合わせて、rm
コマンドをより強力にしたり、副作用を中和してバランスを取ったりする方法を解説します。
オプション | 説明 |
---|---|
rm -rf | 中身のファイル権限を無視してディレクトリごと削除 |
rm -ri | ディレクトリの中身を確認しながら削除 |
rm -rv | ディレクトリを中身ごと削除して表示 |
rm -rf: 中身のファイル権限を無視してディレクトリごと削除する
-r
オプションと-f
オプションを組み合わせることで、中身のファイルの権限情報を無視して、ディレクトリを中身ごと削除できます。
まずは、説明用のファイルとディレクトリを作成して、作成したファイルの書き込み権限を削除します。
1
2
3
4
5
6
7
8
9
10
11
$ mkdir test_dir # test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
$ cd test_dir # test_dirへ移動
$ touch file1 file2 # ファイルを2つ作成
$ ls # 作成されたか確認
file1 file2
$ chmod u-w file1 file2 # 2つのファイルの書き込み権限を削除
$ cd .. # 親ディレクトリへ移動
それでは、-rf
オプションを使って、作成したディレクトリを削除してみましょう。
1
2
3
$ rm -rf test_dir # 中身のファイルの権限を無視して削除
$ ls # 削除されたか確認
# 何も出力されない
ディレクトリと中身の書き込み権限のないファイルを、確認メッセージを表示させずにまとめて削除することができました。
ディレクトリとファイルを問答無用で瞬時に削除するため便利ですが、大切なファイルを間違えて消してしまう危険性もあるので慎重に使いましょう。
rm -ri: ディレクトリの中身を確認しながら削除
-r
オプションと-i
オプションを組み合わせることで、ディレクトリの中身を確認しながら削除することができます。
まずは、説明用のファイルとディレクトリを作成します。
1
2
3
4
5
6
7
8
9
10
$ mkdir test_dir # test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
$ cd test_dir # test_dirへ移動
$ touch file1 file2 # ファイルを2つ作成
$ ls # 作成されたか確認
file1 file2
$ cd .. # test_dirへ戻る
続いて、rm
コマンドに-ri
オプションと削除したいファイル名を指定します。実行すると、ターミナルがユーザーの入力待ちで一時停止の状態になります。
1
2
$ rm -ri test_dir # test_dirを削除
examine files in directory test_dir? # 入力待ちで一時停止
examine files in directory ディレクトリ名?
(日本語訳: 「ディレクトリ名」という名前のディレクトリの中身を確認しますか?)
と表示されたら、y
と入力してenter
キーを押しましょう。
続いて中身のファイルを削除してよいか確認するメッセージが表示されます。
ディレクトリの中にあるファイルを全て削除したら、最後にディレクトリそのものを削除してよいか確認するメッセージが表示されます。
すべてにy
と答えてみましょう。
1
2
3
4
5
6
7
examine files in directory test_dir? y # yと入力してenterを押す
remove test_dir/file1? y # yと入力してenterを押す
remove test_dir/file2? y # yと入力してenterを押す
remove test_dir? y # yと入力してenterを押す
$ ls # 削除されたか確認
# 何も出力されない
ディレクトリの中身のファイルをひとつひとつ確認しながら削除することができました。
ディレクトリを中身ごと瞬時に削除するのではなく、ファイルを1つ1つ吟味しながら削除していきたいときに便利です。
rm -rv: ディレクトリを中身ごと削除して表示
-r
オプションと-v
オプションを組み合わせることで、ディレクトリの中身ごと削除して、削除したファイル名を出力することができます。
まずは、説明用のディレクトリとファイルを作成します。
1
2
3
4
5
6
7
8
9
10
$ mkdir test_dir # test_dirというディレクトリを作成
$ ls # 作成されたか確認
test_dir
$ cd test_dir # test_dirへ移動
$ touch file1 file2 # ファイルを2つ作成
$ ls # 作成されたか確認
file1 file2
$ cd .. # test_dirへ戻る
続いて、-rv
オプションを使ってディレクトリを中身ごと削除してみましょう。
1
2
3
4
5
6
7
$ rm -rv test_dir # test_dirを削除
test_dir/file1
test_dir/file2
test_dir
$ ls # 削除されたか確認
# 何も出力されない
ディレクトリを中身ごと削除することができ、削除されたファイル名も出力されました。
-r
オプションだけでは削除したディレクトリの中身にどのようなファイルが入っていたかを後から知ることができません。-v
オプションも加えることで削除された中身のファイル名を漏れなく出力から確認できますので、削除したファイルを記録しておきたいときに便利です。
コマンドについて学ぶには
「rm以外のコマンドについても、最低限の知識が欲しい!」といった方には、以下の書籍をおすすめします。
macOSのコマンドラインの「超入門」が学べる本です。
こちらは価格も安く内容も簡単で、最初の一冊にもってこいでしょう。
この記事のまとめ
- rmはファイルやディレクトリを削除するためのコマンド
- rmコマンドで削除したファイルやディレクトリは元に戻せない
- 削除したいファイルの種類によってはオプションの使用や確認メッセージへの応答が必要になる
- オプションを上手に組み合わせることで、
rm
コマンドの働きを強めたり和らげたりすることができる