Linuxコマンドのrmコマンドの使い方について書いています。
rmコマンドを使うことで、ファイルやディレクトリを削除することができます。
今回載せているコマンドはUbuntuの22.04.2で確認しました!
rmコマンドの使い方
rmコマンドを使うと、指定したパスのファイルやディレクトリを削除することができます。
オプションを指定せずに、存在するファイルのパスを指定すると、指定したファイルを削除します。
例えば、下記のように実行することができます。
$ rm hoge.txt
実行すると、現在のディレクトリ配下にある「hoge.txt
」ファイルを削除します。
ファイル削除時のメッセージについて
rootユーザーなどのスーパーユーザーの場合には、特にメッセージが表示されずに削除されます。
一般ユーザーのときには、ファイルのパーミッション(権限設定)によって削除前にメッセージが表示されます。
例えば、このようにファイルに書き込み権限がないときです。
$ ls -la
-r-xrwxrwx 1 yasuaki yasuaki 0 May 26 16:07 hoge.txt
このときに削除しようとすると、メッセージが表示されます。
$ rm hoge.txt
rm: remove write-protected regular empty file 'hoge.txt'?
このときには「y
」を入力して、エンターを押すと削除されます。
特に何も入力せずにエンターを押すとファイルは残ったままです。
絶対パスでも指定できる
先ほどは相対パスで指定しましたが、絶対パスで指定することもできます。
例えば、下記のようにルートディレクトリ(‘/’)からファイルを指定して削除することもできます。
$ rm /root/hoge.txt
このように、指定してもファイルを削除することができます。
ディレクトリを削除しようとすると?
オプションをつけずにディレクトリを削除しようとすると削除できません。
例えば、このようにhoge
ディレクトリを削除しようとします。
$ rm hoge
そうすると、下記のように削除できない旨のメッセージが表示されます。
rm: cannot remove 'hoge': Is a directory
オプションを使うと削除できるので、次項から見ていきましょう。
複数のファイルやディレクトリを対象にしたい
複数のファイルやディレクトリを対象にしたいときには、並べて書くことができます。
例えば、下記のようにコマンドの後にファイルやディレクトリを並べることができます。
$ rm -r hoge.txt fuga.txt test
こうすると、「hoge.txt」・「fuga.txt」のふたつのファイルと「test」ディレクトリが対象になります。
-r
オプションについては、後述の内容を確認してください。
ワイルドカードを使う
ワイルドカードを指定することでも、複数のファイルやディレクトリを作成できます。
先ほどのように、現在の位置(カレントディレクトリ)に複数のファイルやディレクトリがあるときです。
下記のようにコマンドを実行します。
$ rm -r *
そうすると、現在の位置(カレントディレクトリ)にある全てのファイルとディレクトリが対象になります。
特定のディレクトリ配下を対象にする
特定のディレクトリ配下を対象にするには、「test/*
」とディレクトリを指定した後にアスタリスクで全てを対象にします。
$ rm -r test/*
これで、test
ディレクトリ配下のファイルやディレクトリが消えます。
rmコマンドのオプションは?
rmコマンドのオプションについて書いています。
オプション | 内容 |
---|---|
-i | 削除前に確認メッセージを表示する(yで削除) |
-v | 削除したファイルの情報を表示する |
-d | 空のディレクトリを削除する |
-r | ディレクトリを削除する |
-f | パーミッションに関係なく、確認メッセージを表示しない |
-iオプションで確認メッセージを表示する
自分が作成したファイルでも削除前に「-i
」オプションをつけることで確認メッセージが表示されます。
rootユーザーでも「-i
」オプションをつけると、削除前に確認メッセージを表示してくれます。
$ rm -i hoge.txt
このように実行すると、下記のようにメッセージが表示されます。
$ rm -i hoge.txt
rm: remove regular empty file 'hoge.txt'?
「y
」を入力すると削除されます。
何も入力しない場合には、ファイルは削除されません。
-vオプションで削除ファイルを確認する
-v
オプションを使うことで、削除したファイルを削除後に教えてくれます。
例えば、下記のようにコマンドを実行します。
$ rm -v hoge.txt fuga.txt piyo.txt
-v
オプションをつけて、rmコマンドを使っています。
3つのファイルを対象に削除しています。
コマンドを実行すると、下記のように削除したファイルを教えてくれます。
$ rm -v hoge.txt fuga.txt piyo.txt
removed 'hoge.txt'
removed 'fuga.txt'
removed 'piyo.txt'
-dオプションでディレクトリを削除する
-d
オプションを使用すると、何も入っていない空のディレクトリを削除することができます。
例えば、下記のように使うことができます。
$ rm -d test
これで実行すると、test
ディレクトリが空の場合には削除されます。
ディレクトリの中にファイルやディレクトリが存在した場合には削除されません。
ファイルやディレクトリが存在したときには、下記のようにメッセージが表示されます。
$ rm -d test
rm: cannot remove 'test': Directory not empty
-rオプションでディレクトリを削除する
-r
オプションもディレクトリを削除することができます。
-r
オプションを使うと、ディレクトリの中にファイルがあった場合にも再帰的にディレクトリを削除することができます。
例えば、下記のような階層のディレクトリがあります。
text.txt
とtext2.txt
はファイルです。
hoge
|-- fuga
| `-- test
|-- text.txt
`-- text2.txt
下記のように-r
オプションを使用することで、一括して削除することができます。
$ rm -r hoge
実行すると、hoge
ディレクトリと一緒に配下のファイルやディレクトリも削除されました。
-fオプションでメッセージを表示しない
-f
オプションをつけると、メッセージを表示せずにファイルやディレクトリを削除します。
例えば、下記のtest.txt
ファイルは書き込み権限がないので、削除時に確認メッセージが表示されます。
$ ls -la
-r-xrwxrwx 1 yasuaki yasuaki 0 May 26 16:35 test.txt
-f
オプションをつけると、確認メッセージを表示せずに削除することができます。
$ rm -f test.txt
オプションを組み合わせる
オプションは組み合わせて使うことができます。
紹介したオプションを組み合わせて使ってみます。
下記コマンドでは、-i
オプション(削除確認)・-v
オプション(情報表示)・-r
オプション(ディレクトリ削除)を使って削除しています。
$ rm -ivr hoge hoge2 hoge3
hoge・hoge2・hoge3
はディレクトリです。
実行すると、下記のように全てのディレクトリやファイルを削除するときに、確認メッセージが表示されました。
そして、削除が終わると削除したディレクトリ情報も表示してくれています。
$ rm -ivr hoge hoge2 hoge3
rm: descend into directory 'hoge'? y
rm: descend into directory 'hoge/fuga'? y
rm: remove directory 'hoge/fuga/test'? y
removed directory 'hoge/fuga/test'
rm: remove directory 'hoge/fuga'? y
removed directory 'hoge/fuga'
rm: remove directory 'hoge'? y
removed directory 'hoge'
rm: descend into directory 'hoge2'? y
rm: descend into directory 'hoge2/fuga'? y
rm: remove directory 'hoge2/fuga/test'? y
removed directory 'hoge2/fuga/test'
rm: remove directory 'hoge2/fuga'? y
removed directory 'hoge2/fuga'
# --- 省略 ---
rmコマンドの使い方まとめ
今回はrmコマンドの使い方について書きました。
記事の内容をまとめると、下記のようになります。
・コマンド実行時にパーミッションやユーザーによってはメッセージが表示される
・ディレクトリを削除したいときには「`-r`」を使う
rmコマンドを使うときは-rf
などで削除することが多いと思います。
このときには特にメッセージも出ずにサクッと消えてしまいます。
さらにワイルドカードを使うと、対象が広くなるので、対象を把握しておかないと予想外のファイルが消えてしまう可能性があります。
実行するパスなどには注意して使っていきましょう。
コメント