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つずつ「消しますか?」と聞いてくれる |
そして、守る習慣はこれだけです。
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-dirrm:ファイルを消す
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-dirrm も、成功したときは何も表示しません。ls で、a.txt が消えたことを確かめましょう。
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'? nremove 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.txtls -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'? ydescend into directory は「ディレクトリの中に入りますか?」、remove directory は「ディレクトリを消しますか?」という意味です。聞かれる順番は、次のようになりました。
-
boxの中に入るか -
box/innerの中に入るか -
box/inner/item2.txtを消すか - 空になった
box/innerを消すか -
box/item1.txtを消すか - 最後に、空になった
boxを消すか
rm -ri は、奥の中身から先に消して、空になったディレクトリを最後に消す順番で聞いてきます。今回は inner の中身が item1.txt より先に聞かれましたが、この順番はいつも同じとは限らず、環境によって変わることがあります。順番を当てにせず、表示される名前を1つずつ読んでから答えましょう。
1つずつ聞かれるので少し手間ですが、そのぶん安全です。最後に ls で、box がなくなったことを確かめましょう。
(例)
- 1
- 2
kaito@demo:~/linux-practice/rm-test$ ls
c.txt絶対にやってはいけない書き方
ここで紹介する書き方は、説明のためだけに載せています。練習でも、試さないでください。
-
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' を削除できません: そのようなファイルやディレクトリはありません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 ファイルだけ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・場所を確かめない*・パスの途中のスペースは、特に危ない
これで、作る・コピーする・移動する・消すがひと通りできるようになりました。次は、ファイルの中身を見るコマンドです。ログを読むときにも使う、大事なコマンドたちです。
次に読む記事
- 前の記事:Linuxのコピー・移動・名前変更|cp・mvの基本と上書きを防ぐ -i【初心者向け】
- 次の記事:Linuxでファイルの中身を見る|cat・less・head・tailの使い分け【初心者向け】
関連する記事
- Git入門|init・add・commit を1回やってみる:消してしまっても戻せるように、変更の履歴を残しておきたい方に
- プロが使う.gitignoreパターン集|現場で効くテンプレ:消してはいけないファイルと、記録しなくていいファイルの分け方を知りたい方に
- Cursorにエラーを直してもらう5ステップ|エラーの渡し方・頼み方・直った後の確認まで:AI に確認してもらうときの、上手な頼み方を知りたい方に