先ほど、ホームディレクトリが作業ディレクトリだった間違ったターミナルでrm -rf *
を実行したため、ホームフォルダを誤って削除してしまいました。
rm
コマンドのエイリアスが欲しいのですが、そうではありませんでした。
現在、rm
のエイリアスとしてスクリプトを作成する予定です。
提案するベストプラクティスはありますか?
ありがとう。
カスタマイズしたrm
が必要な場合は、rm
ではなく、自分の名前、myrm
、delete
などと呼びます。
rm='rm -i'
エイリアスは恐ろしいものです。しばらく使用すると、ファイルを削除する前にデフォルトでrm
がプロンプトを表示することが期待されるためです。もちろん、ある日、そのエイリアスが設定されていないアカウントで実行し、何が起こっているのかを理解する前に、それは遅すぎます。
いずれにしても、ファイルの損失や破損に備えるための適切な方法は、バックアップを行うことです。
偶発的なファイルの削除や上書きから保護する高速な代替策は、ZFSなどの無制限のスナップショットをサポートするファイルシステムを使用することです。頻繁なスナップショットが自動的に行われる場合は、インシデント前の最後のスナップショット中の状態でファイルを回復できます。
エイリアスを保存したいが、システム上で他のコマンドとは異なる動作をするコマンドに慣れる危険を冒したくない場合は、このようにrm
を無効にすることができます
alias rm='echo "rm is disabled, use remove or trash or /bin/rm instead."'
次に、独自の安全なエイリアスを作成できます。
alias remove='/bin/rm -irv'
または、代わりにtrash
を使用してください。
代わりに trash
を使用してみてください。時々それを空にすることを忘れないでください...
みんなのプロファイルを変更する必要なく、あなたができることは-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'?
次のスクリプトを使用します。
#!/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
ディレクトリの半自動クリーンアップ)。