web-dev-qa-db-ja.com

rmを使用せずにファイルを削除する方法は?

私たちの企業が使用するサードパーティのスケジューリングアプリケーションは、期待どおりにrmコマンドを実行しません。つまり、rm -f $filetoremoveが完了し、スクリプトの次のコード行に進むことを期待しています。

しかし、優先的に実行するには、rm -fを取得する必要があります。

rmを使用せずにファイルを削除する別の方法はありますか? > delete_foobar.fileを試しましたが、削除せずに空にしただけです。

追加情報:私の作業環境は大企業です。 .shスクリプトを書いて、スケジューリングアプリケーションの外部でテストしています。スケジューリングソフトウェアの外では、rm -f $filetoremoveコマンドは0の戻りコードで機能します。ただし、スケジューリングソフトウェアは0戻りコードを登録せず、残りの.shスクリプトを実行せずにすぐに終了します。これは問題があり、ベンダーはこの欠陥を認めています。

自動化ソフトウェアの詳細も、自動化ソフトウェアが受け取る正確な戻りコードも知りません。私が知っているのは、自動化ソフトウェアを介して実行すると、スクリプトにrmが含まれている場合、スクリプトが完全には実行されないことです。これがrmの代替案を探している理由です。

はい、ファイルの処理が完了したら、ファイルを削除することが重要です。

6
zundarz

unlink コマンドもPOSIXの一部です:

unlink <file>
13
kmkaplan

shredを実行できますか?もしそうなら、それから:

shred -u <file to remove>
8
airhuff

rmを使用せずにファイルを削除する別の方法はありますか?

busybox rm -f path/to/file

これは、スケジューリングアプリケーションでbusyboxを無制限に実行できることを前提としています。どのアプリケーションであるかを指定していないため、どのような制限があるのか​​実際にはわかりませんが、アプリケーションがrmの実行を防止する単純なモリーガードを備えている場合は、上記が機能するはずです。

7
DepressedDaniel

GNU findfind /your/file -deleteは機能する可能性があります。

6
Ulrich Schwarz

ファイルを/ tmpに移動します。

mv filename /tmp

次回の再起動時に削除されます。

1
chandra