Linuxの削除コマンドrmの安全な使い方|ゴミ箱がない世界で消しすぎないコツ

Linux のコマンドの中で、いちばん慎重に扱いたいのが ファイルを消すコマンド rm です。

Windows や Mac なら、消したファイルはいったんゴミ箱に入りますよね。でも、ターミナルの rm にはゴミ箱がありません。Enter を押した瞬間に消えて、基本的には元に戻せません。私も最初は、Enter を押すたびに少しドキドキしていました。

とはいえ、怖がりすぎる必要はありません。「消す前に確かめる」習慣と、やってはいけない書き方さえ知っていれば、安全に使えます。この記事では、練習用のディレクトリの中だけで、一緒に試していきましょう。

💡
この記事でわかること
  • rm でファイルを消す方法
  • rmdir と rm -r で、ディレクトリを消す方法
  • 消す前に ls で確かめる習慣
  • -i で、1つずつ確認しながら消す方法
  • 絶対にやってはいけない、危ない書き方
🔰
この記事の前提
  • pwd・ls・cd と、パスの書き方がわかる
  • mkdir・touch・cp・mv が使える

まだの方は、前の記事「Linuxのコピー・移動・名前変更|cp・mvの基本と上書きを防ぐ -i【初心者向け】」から読むのがおすすめです。

💡
用語メモ
  • Git:ファイルの変更の履歴を記録しておく道具
  • ターミナル:文字を打ってパソコンに指示を出すための画面(アプリ)。いわゆる「黒い画面」です。打った文字を読み取って動かすのは、この中で動いている「シェル」です
  • コマンド:パソコンへの指示の言葉。ターミナルに打って Enter で実行します
  • ディレクトリ:フォルダのこと

用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。

⚠️
この記事のコマンドは、練習用ディレクトリの中だけで試してください

この記事では、~/linux-practice/rm-test という練習用のディレクトリを作り、その中だけで消す練習をします。自分の大事なファイルがあるディレクトリでは、試さないでください。コマンドを打つ前に pwd で、今いる場所が rm-test になっているか毎回確かめましょう。


結論:消すコマンドは3つ、守る習慣は1つ

やりたいこと コマンド 注意
ファイルを消す rm ファイル名 ゴミ箱に入らず、すぐ消える
空のディレクトリを消す rmdir ディレクトリ名 中身があると消えない(安全)
ディレクトリを中身ごと消す rm -r ディレクトリ名 中のものも全部消える。いちばん慎重に
確認しながら消す rm -i・rm -ri 1つずつ「消しますか?」と聞いてくれる

そして、守る習慣はこれだけです。

💡
消す前に、同じ指定で ls してみる

rm を打つ前に、rm の部分を ls に変えて実行してみましょう。表示されたものが、そのまま消えるものです。思っていないものが表示されたら、rm は打たずに止まりましょう。

消す前の確認の流れ

準備:練習用のディレクトリを作る

  • 1
  • 2
  • 3
mkdir -p ~/linux-practice/rm-test
cd ~/linux-practice/rm-test
pwd

🖥️
この記事の出力例について

ここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。

(例)

  • 1
/home/kaito/linux-practice/rm-test

最後が rm-test になっていることを確かめてから、練習用のファイルを作ります。

  • 1
  • 2
  • 3
  • 4
  • 5
touch a.txt b.txt c.txt
mkdir empty-dir
mkdir -p box/inner
touch box/item1.txt box/inner/item2.txt
ls

(例)

  • 1
a.txt  b.txt  box  c.txt  empty-dir

rm:ファイルを消す

rm(アールエム)は remove(取り除く)の略です。まずは、消す前に ls で確かめます。

  • 1
  • 2
  • 3
ls a.txt
rm a.txt
ls

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
kaito@demo:~/linux-practice/rm-test$ ls a.txt
a.txt
kaito@demo:~/linux-practice/rm-test$ rm a.txt
kaito@demo:~/linux-practice/rm-test$ ls
b.txt  box  c.txt  empty-dir

rm も、成功したときは何も表示しません。ls で、a.txt が消えたことを確かめましょう。

Debian 13での実行画面(ls a.txt で確かめてから rm a.txt、ls で消えたことを確かめたところ)

rm -i:1つずつ確認しながら消す

-i を付けると、消す前に1つずつ確認してくれます。

  • 1
rm -i b.txt c.txt

(例)

  • 1
  • 2
rm: remove regular empty file 'b.txt'? y
rm: remove regular empty file 'c.txt'? n

remove regular empty file 'b.txt'? は「空のふつうのファイル b.txt を消しますか?」という意味です。消してよければ y、やめるなら n を押して Enter です。最後に ls で、c.txt だけが残っていることを確かめてみてください。

  • 1
ls

(例)

  • 1
box  c.txt  empty-dir

ディレクトリを消す:rmdir と rm -r

rmdir:空のディレクトリだけを消す

rmdir(アールエムディア)は、中身が空のディレクトリだけを消すコマンドです。

  • 1
  • 2
rmdir empty-dir
ls

(例)

  • 1
box  c.txt

中身があるディレクトリに使うと、エラーで止まってくれます。

  • 1
rmdir box

(例)

  • 1
rmdir: failed to remove 'box': Directory not empty

「Directory not empty(ディレクトリが空ではありません)」、つまり「空じゃないので消しません」という意味のメッセージです。うっかり中身ごと消すことがないので、空のディレクトリを消すときは rmdir がおすすめです。

rm -r:中身ごと消す

中身があるディレクトリを消すには、-r(recursive=中までたどる)を付けます。中のファイルやディレクトリも全部消えるので、必ず先に中身を確かめましょう。

  • 1
ls -R box

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
box:
inner  item1.txt

box/inner:
item2.txt

ls -R は、中のディレクトリまでたどって全部表示するオプションです。消えてもいいものだけだと確かめてから、-i も付けて消してみます。

  • 1
rm -ri box

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
rm: descend into directory 'box'? y
rm: descend into directory 'box/inner'? y
rm: remove regular empty file 'box/inner/item2.txt'? y
rm: remove directory 'box/inner'? y
rm: remove regular empty file 'box/item1.txt'? y
rm: remove directory 'box'? y

descend into directory は「ディレクトリの中に入りますか?」、remove directory は「ディレクトリを消しますか?」という意味です。聞かれる順番は、次のようになりました。

  1. box の中に入るか
  2. box/inner の中に入るか
  3. box/inner/item2.txt を消すか
  4. 空になった box/inner を消すか
  5. box/item1.txt を消すか
  6. 最後に、空になった box を消すか

rm -ri は、奥の中身から先に消して、空になったディレクトリを最後に消す順番で聞いてきます。今回は inner の中身が item1.txt より先に聞かれましたが、この順番はいつも同じとは限らず、環境によって変わることがあります。順番を当てにせず、表示される名前を1つずつ読んでから答えましょう。

1つずつ聞かれるので少し手間ですが、そのぶん安全です。最後に ls で、box がなくなったことを確かめましょう。

(例)

  • 1
  • 2
kaito@demo:~/linux-practice/rm-test$ ls
c.txt

Debian 13での実行画面(rm -ri box の途中。3つに y で答えて、4つ目の「remove directory 'box/inner'?」で止まっているところ)

rmdir と rm -r の違い

絶対にやってはいけない書き方

ここで紹介する書き方は、説明のためだけに載せています。練習でも、試さないでください。

🚫
危ない書き方の例(実行しないこと)
  • sudo を付けた rm -r:管理者の権限で消すので、OS(=パソコンを動かす土台のソフト)の大事なファイルも消せてしまいます。ネットの記事に書いてあっても、意味がわかるまでは使わないでください。
  • -f(確認なしで強制的に消す)を付けた rm -rf:エラーも確認も出さずに消し続けます。打ち間違いがあっても止まりません。
  • 場所を確かめずに *(すべて)を使う:* は「今いる場所のすべて」という意味です。思っていたのと違う場所にいると、そこにあるものが全部消えます。
  • パスの途中にうっかりスペースを入れる:~/linux-practice/rm-test のつもりで ~/ linux-practice/rm-test と打つと、~/(ホームディレクトリ全体)と linux-practice/rm-test の2つを消せ、という意味になってしまいます。

どれも、「消す前に pwd と ls で確かめる」習慣があれば防げるものです。特に * を使うときは、同じ指定で先に ls を打ってみてください。

💡
ゴミ箱がほしいときは

どうしても不安な方は、ゴミ箱に送るコマンド(trash-cli など)を後から入れる方法もあります。ソフトを入れる apt の使い方は、この連載の Lv2 で扱います。まずは「消す前に確かめる」習慣を身につけるのがいちばんの近道です。


よくあるつまずき

「Is a directory」と出て消えない

ディレクトリに -r なしで rm を使うと、エラーで止まります。

(例)

  • 1
  • 2
  • 3
kaito@demo:~/linux-practice/rm-test$ mkdir box2
kaito@demo:~/linux-practice/rm-test$ rm box2
rm: cannot remove 'box2': Is a directory

「Is a directory(ディレクトリです)」と出て、box2 は消えずに残ります。空のディレクトリなら rmdir、中身ごと消してよいなら、中身を確かめてから rm -ri を使いましょう。

「No such file or directory」と出る

消したいファイルの名前が違うか、今いる場所が違います。pwd と ls で確かめてみてください。

(例)

  • 1
rm: cannot remove 'nothing.txt': No such file or directory

日本語で表示される環境では、英語と日本語が混ざる

日本語の設定(ロケール)になっている環境では、メッセージが日本語で出ます。ただし、rm の確認は英語と日本語が混ざった表示になることがあります。今回の Debian 13 で日本語の設定にして試すと、次のようになりました。記事と同じ順番で、rm -i b.txt c.txt → rmdir box(中身があるので止まる)→ rm -ri box → rm box2 → rm nothing.txt と実行しています。

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
rm: regular empty file 'b.txt' を削除しますか? y
rm: regular empty file 'c.txt' を削除しますか? n
rmdir: 'box' を削除できません: ディレクトリは空ではありません
rm: ディレクトリ 'box' 配下に入りますか? y
(途中省略)
rm: directory 'box' を削除しますか? y
rm: 'box2' を削除できません: ディレクトリです
rm: 'nothing.txt' を削除できません: そのようなファイルやディレクトリはありません

Debian 13での実行画面(日本語の設定で、rm -i・rmdir box・rm -ri box の確認6つ・rm box2・rm nothing.txt を順に実行)

rm -ri box の確認は、最初と最後だけを載せています。「ディレクトリ 'box' 配下に入りますか?」が英語の表示の descend into directory、「directory 'box' を削除しますか?」が remove directory にあたります。表示が混ざっていても、名前の部分を読んで、消してよいものだけ y と答えるのは同じです。

消してはいけないものを消してしまった

rm で消したファイルは、基本的に元に戻せません。大事なファイルの場合は、バックアップや Git の履歴から戻すことになります。だからこそ、作業の前に cp -r でコピーを取っておく習慣が役に立ちます。

🤖 詰まったらAIに聞こう:この rm、打っても大丈夫?

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
Linuxの初心者です。次の rm コマンドを実行しようとしています。
実行する前に、何が消えるのか、危ない書き方になっていないかを確認してください。
少しでも危険があれば、より安全な書き方も教えてください。

【使っている環境】WSLのUbuntu など
【今いる場所(pwd の結果)】ここに貼る
【今いる場所の ls の結果】ここに貼る
【実行しようとしているコマンド】ここに貼る(まだ実行していません)
【消したいもの】例:rm-test の中の .txt ファイルだけ

🔒
AIに貼る前に:秘密情報やパスワードは貼らない

ls の結果には、ファイル名がそのまま出ます。取引先の名前、個人の名前、パスワードやキーが入ったファイル名などが写っていないか確認し、気になる部分は「***」に置き換えてから貼ってください。


練習が終わったら

練習用のディレクトリは、次のようにまとめて片づけられます。必ず pwd で場所を確かめてから実行してください。

  • 1
  • 2
  • 3
  • 4
cd ~/linux-practice
pwd
ls rm-test
rm -ri rm-test

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
kaito@demo:~/linux-practice$ pwd
/home/kaito/linux-practice
kaito@demo:~/linux-practice$ ls rm-test
c.txt
kaito@demo:~/linux-practice$ rm -ri rm-test
rm: descend into directory 'rm-test'? y
rm: remove regular empty file 'rm-test/c.txt'? y
rm: remove directory 'rm-test'? y

ここでも、rm-test の中に入る → 中の c.txt を消す → 空になった rm-test を消す、の順番で確認が出ます。


よくある質問

Q. WSL で、Windows 側のファイル(/mnt/c/...)を rm で消すと、Windows のごみ箱に入りますか?

入りません。WSL のターミナルから rm で消したファイルは、Windows 側のファイルでも、ごみ箱を通らずに消えます。Windows 側のファイルは、練習では消さないようにしましょう。

Q. rm -rf は、どんなときに使うものですか?

確認やエラーを出さずに、まとめて消したいときに使います。手順書やネットの記事でよく見かけますが、打ち間違いがそのまま大きな事故になります。慣れるまでは使わず、rm -ri で確かめながら消しましょう。


まとめ

  • rm にはゴミ箱がない。消したら基本的に戻せない
  • ファイルは rm、空のディレクトリは rmdir、中身ごとなら rm -r
  • 消す前に、同じ指定で ls して、消える対象を確かめる
  • 不安なときは -i を付けて、1つずつ確認しながら消す
  • sudo・-f・場所を確かめない *・パスの途中のスペースは、特に危ない

これで、作る・コピーする・移動する・消すがひと通りできるようになりました。次は、ファイルの中身を見るコマンドです。ログを読むときにも使う、大事なコマンドたちです。


次に読む記事


関連する記事