web-dev-qa-db-ja.com

rmコマンドにエイリアスを付けて安全にするためのベストプラクティス

先ほど、ホームディレクトリが作業ディレクトリだった間違ったターミナルでrm -rf *を実行したため、ホームフォルダを誤って削除してしまいました。

rmコマンドのエイリアスが欲しいのですが、そうではありませんでした。

現在、rmのエイリアスとしてスクリプトを作成する予定です。

提案するベストプラクティスはありますか?

ありがとう。

21
Vincenzo Pii

カスタマイズしたrmが必要な場合は、rmではなく、自分の名前、myrmdeleteなどと呼びます。

rm='rm -i'エイリアスは恐ろしいものです。しばらく使用すると、ファイルを削除する前にデフォルトでrmがプロンプトを表示することが期待されるためです。もちろん、ある日、そのエイリアスが設定されていないアカウントで実行し、何が起こっているのかを理解する前に、それは遅すぎます。

いずれにしても、ファイルの損失や破損に備えるための適切な方法は、バックアップを行うことです。

偶発的なファイルの削除や上書きから保護する高速な代替策は、ZFSなどの無制限のスナップショットをサポートするファイルシステムを使用することです。頻繁なスナップショットが自動的に行われる場合は、インシデント前の最後のスナップショット中の状態でファイルを回復できます。

31
jlliagre

エイリアスを保存したいが、システム上で他のコマンドとは異なる動作をするコマンドに慣れる危険を冒したくない場合は、このようにrmを無効にすることができます

alias rm='echo "rm is disabled, use remove or trash or /bin/rm instead."'

次に、独自の安全なエイリアスを作成できます。

alias remove='/bin/rm -irv'

または、代わりにtrashを使用してください。

13
Dario Seidl

代わりに trash を使用してみてください。時々それを空にすることを忘れないでください...

5
l0b0

みんなのプロファイルを変更する必要なく、あなたができることは-iと呼ばれるファイルをディレクトリに置くことです。

# touch -- -i
# ll
total 0
-rw-r--r-- 1 root users  0 Jan 26 19:24 files
drwxr-xr-x 2 root users 40 Jan 26 19:24 folder_of_power
-rw-r--r-- 1 root root   0 Jan 26 19:25 -i
-rw-r--r-- 1 root users  0 Jan 26 19:24 important
-rw-r--r-- 1 root users  0 Jan 26 19:24 very
# rm -rf *
rm: remove regular empty file `files'? 
4
DarkHeart

次のスクリプトを使用します。

#!/bin/sh

trash=$HOME/tmp
mv "$@" $trash
Nohup find "$trash" -type f -atime +7 -exec /bin/rm '{}' \; 2>&1 &

誤ってファイルを削除してしまった場合は、$HOME/tmpから復元してください。

スクリプトは、削除されたファイルをtmpディレクトリに移動し、アクセス時間が7日後の場合、次に削除スクリプトが実行されるときにそれらを削除します($HOME/tmpディレクトリの半自動クリーンアップ)。

1
user580224