man
rm
のページ GNU coreutils 8.12.197-032bbでは、-f
について説明しています。 または--force
「存在しないファイルを無視し、プロンプトを表示しない」というオプション。このオプションがないと、既存のファイルが削除され、プロンプトが表示されず、指定されたファイルのいずれかが存在しなかった場合はゼロ以外の終了コードが返されます。 もしあればファイルを保存したい 指定されたファイルのうち存在しない 。これを行う最も簡単な方法は何ですか?
ユースケースは安全です :存在しないファイルを削除しようとしている場合は、コマンドに無効な期待値(または明白なバグ)があることが原因である可能性があります。たとえば、有名なrm -rf /usr /lib/nvidia-current/xorg/xorg
多くの方法で回避できた可能性がありますが、そのうちの1つはそのようなオプションです(明らかに、ユーザーが/lib/nvidia-current/xorg/xorg
を持っていた場合を除きます。 ディレクトリ)、およびもう1つはMoreQuotes™を使用することです。ただし、引用符は必ずしも十分ではありません。たとえば、ssh host '/bin/rm some paths; /bin/bash foo.sh'
–セミコロンを忘れたり、コロンやコンマなどの他の記号を挿入したりした場合は、/bin/bash
を削除しようとします。 および~/foo.sh
。
承認された回答:
私はこの種のものを使用します:
mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE
シングルパスの場合:
mv /some/path DELETE && rm -rf DELETE
さらに良いことに、rm command
を入力します 別のコマンドライン:mv /some/path DELETE
入力 rm -rf DELETE
入力 。そうすれば、唯一のrm
シェル履歴に含めるコマンドは、DELETE
というファイルにあります したがって、古いバージョンのファイルを削除した場合でも、誤って Upを押して新しいバージョンを削除するリスクはありません。 間違った回数、 Enter 。
少し自動化したい場合:
mv_to_DELETE () {
mkdir DELETE &&
mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE