【Linux豆知識】rm コマンドをヘルプの指示通り実行してみた

必ず使う基本操作 rm

rm しないことってないですよねー。 どこのサイトも rm コマンドのオプション一覧と意味は載せてくれていますが、rm コマンドを実際に実行したらどうなるかまでは載せてくれていません。 私のような見様見真似でやってるような人間には分かりにくいので、rm のヘルプを見て翻訳の練習もかねて自分用にまとめてみました。
rm コマンド解説 ファイル構成
練習用に上記のような適当なファイル構成を作ってみました。

rm [OPTION]… FILE…

補足: 実行結果が表示されないので「i」オプションや「v」オプションを併用するなどする方が良い。
[yasumono@test-srv ~]$ rm /home/yasumono/test/test_img.JPG
[yasumono@test-srv ~]$ 
rm /home/yasumono/test/test_img.JPG の実行結果

-f, –force

原文: ignore nonexistent files, never prompt
対訳: 存在しないファイルは無視し、その旨も表示しない。
[yasumono@test-srv ~]$ rm /home/yasumono/test/test_img.JPG
rm: cannot remove `/home/yasumono/test/test_img.JPG': No such file or directory

[yasumono@test-srv ~]$ rm -f /home/yasumono/test/test_img.JPG
[yasumono@test-srv ~]$ 
rm -f /home/yasumono/test/test_img.JPG の実行結果

-i

原文: prompt before every removal
対訳: それぞれのファイルを削除する前に確認を行う。
[yasumono@test-srv test]$ rm -i /home/yasumono/test/*
rm: remove symbolic link `/home/yasumono/test/images'? y
rm: cannot remove `/home/yasumono/test/test_dir1': Is a directory
rm: cannot remove `/home/yasumono/test/test_dir2': Is a directory
rm: remove regular file `/home/yasumono/test/test_img.JPG'? y
rm: remove regular file `/home/yasumono/test/test_text.txt'? y
rm -i /home/yasumono/test/* の実行結果

-I, –interactive

原文: prompt once before removing more than three files, or when removing recursively. Less intrusive than -i, while still giving protection against most mistakes
対訳: 3つ以上のファイルを削除する前や再帰的な削除をしようとする際に、1度だけ確認する。 「i」オプションほどお節介さんではないですが、ミスを防ぐのに効果的です。
[yasumono@test-srv test]$ rm -I /home/yasumono/test/*
rm: remove all arguments? y
rm: cannot remove `/home/yasumono/test/test_dir1': Is a directory
rm: cannot remove `/home/yasumono/test/test_dir2': Is a directory
rm -I /home/yasumono/test/* の実行結果

–interactive[=WHEN]

原文: prompt according to WHEN: never, once (-I), or always (-i). Without WHEN, prompt always
対訳: [WHEN]に指定されたものにより、確認を行う。[WHEN]がない場合は毎回確認を行う。
補足: never – 確認を行わない。 once – 3つ以上のファイルを削除する前や再帰的な削除をしようとする際に、一度だけ確認する。「I」オプションと同じ。 always – それぞれのファイルを削除する前に確認を行う。「i」オプションと同じ。
[yasumono@test-srv test]$ rm --interactive=never /home/yasumono/test/*
rm: cannot remove `/home/yasumono/test/test_dir1': Is a directory
rm: cannot remove `/home/yasumono/test/test_dir2': Is a directory
rm –interactive=never /home/yasumono/test/* の実行結果

–one-file-system

原文: when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument
対訳: ディレクトリ階層を再帰的に削除する際に、コマンドラインで引数として 指定したディレクトリが存在するファイルシステムとは別のファイル システム上にある、いかなるディレクトリも削除しない。
[yasumono@test-srv test]$ rm -v --one-file-system /home/yasumono/test/*
removed `/home/yasumono/test/images'
rm: cannot remove `/home/yasumono/test/test_dir1': Is a directory
rm: cannot remove `/home/yasumono/test/test_dir2': Is a directory
removed `/home/yasumono/test/test_img.JPG'
removed `/home/yasumono/test/test_text.txt'
rm –one-file-system /home/yasumono/test/* の実行結果

–no-preserve-root

原文: do not treat `/’ specially
対訳: ルートディレクトリを特別扱いしない。
補足:危険なコマンド、バルス!
リアルにバルスなのでコマンド掲載を自粛します。
バルス

–preserve-root

原文: do not remove `/’ (default)
対訳: ルートディレクトリを削除しない。
対訳: デフォルト設定なので普通指定することはない
[yasumono@test-srv test]$ rm -v --preserve-root /home/yasumono/test/*
removed `/home/yasumono/test/images'
rm: cannot remove `/home/yasumono/test/test_dir1': Is a directory
rm: cannot remove `/home/yasumono/test/test_dir2': Is a directory
removed `/home/yasumono/test/test_img.JPG'
removed `/home/yasumono/test/test_text.txt'
rm -v –preserve-root /home/yasumono/test/* の実行結果

-r, -R, –recursive

原文: remove directories and their contents recursively
対訳: ディレクトリとその中身を再帰的に削除する。
[yasumono@test-srv test]$ rm -rv /home/yasumono/test/*
removed `/home/yasumono/test/images'
removed `/home/yasumono/test/test_dir1/test_img1.jpg'
removed `/home/yasumono/test/test_dir1/test_text1.txt'
removed directory: `/home/yasumono/test/test_dir1'
removed `/home/yasumono/test/test_dir2/test_text2.txt'
removed `/home/yasumono/test/test_dir2/test_img2.JPG'
removed directory: `/home/yasumono/test/test_dir2'
removed `/home/yasumono/test/test_img.JPG'
removed `/home/yasumono/test/test_text.txt'
rm -rv /home/yasumono/test/* の実行結果

-v, –verbose

原文: explain what is being done
対訳: 何が行われたか表示する。
補足: 削除後にそれぞれのファイルおよびディレクトリに何が行われたか表示する。
[yasumono@test-srv test]$ rm -v /home/yasumono/test/*
removed `/home/yasumono/test/images'
rm: cannot remove `/home/yasumono/test/test_dir1': Is a directory
rm: cannot remove `/home/yasumono/test/test_dir2': Is a directory
removed `/home/yasumono/test/test_img.JPG'
removed `/home/yasumono/test/test_text.txt'
rm -v /home/yasumono/test/* の実行結果

–help

原文: display this help and exit
対訳: このヘルプを表示する。

–version

原文: output version information and exit
対訳: バージョン情報を出力する。
[yasumono@test-srv test]$ rm --version
rm (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Richard M. Stallman,
and Jim Meyering.
rm –version の実行結果
原文: By default, rm does not remove directories. Use the –recursive (-r or -R) option to remove each listed directory, too, along with all of its contents. To remove a file whose name starts with a `-‘, for example `-foo’,use one of these commands:「rm — -foo」「rm ./-foo」 Note that if you use rm to remove a file, it is usually possible to recover the contents of that file. If you want more assurance that the contents are truly unrecoverable, consider using shred.
対訳: ところで、rm コマンドはディレクトリを削除しない。対象のディレクトリを削除するときは –recursive (-r or -R) オプションを使ってね。 「-foo」みたいに「-」で始まるファイルを消す時は「rm — -foo」「rm ./-foo」を使ってね。 rm コマンドを使ってファイルを削除すると、普通はそのファイルの内容を復活できます。 安全に復活できないようにしたい場合は、shred コマンドを使うことを検討してね。