私はrm
を使ってより安全なエイリアスを作成することに慣れています。
osx-trash
を使用していますが、Ruby 1.9.2にアップグレードすると、これは機能しなくなります。
Pythonのtrash-cli
については知っていますが、ファイルを別のディレクトリではなく、OSXのごみ箱フォルダに移動するものをお勧めします。
誰かが良い解決策を持っていますか?
OSXの場合、 safe-rm
を使用できます
brew install safe-rm
デフォルトのrm
よりも優先するには追加の手順を実行する必要があります-シンボリックリンクを追加します。
echo $PATH
私の場合、最初に/usr/local/bin:
があり、safe-rm
インストールと同じディレクトリです。
safe-rm
にシンボリックリンクを追加します
ln -s /usr/local/bin/safe-rm /usr/local/bin/rm
デフォルトのrm
を削除して復元するには、シンボリックリンクrm /usr/local/bin/rm
を削除します。
設定ファイルは/etc/safe-rm.conf
で追加できます
例えば:
/private
/Applications
/Developer
/Library
/Network
/System
/Users
/Volumes
/test
rm -rf /test
でテストするとsafe-rm.conf
からの削除が拒否されます
hasseg.org/trash は osx-trash のようなObjective-Cユーティリティです。
mv * ~/.Trash
のようにファイルを上書きしないシェル関数を作成しました。ただし、常にアイテムをスタートアップボリュームに移動します。
trash() {
for f in "$@"; do
bn=$(basename "$f")
while [ -e ~/.Trash/"$bn" ]; do
bn="$bn $(date +%H.%M.%S %p)"
done
mv "$f" ~/.Trash/"$bn"
done
}
ファイルを削除する前にプロンプトが表示されるので、私にとってはrm -i
で十分です。ただし、safe-rm
によって提供される追加のセキュリティはまったく悪い考えではありません。
rm=safe-rm -i
couldのような単純なalias
で十分ですが、rm -rf
は機能しません。これは、-i
は-f
によって上書きされます。
したがって、-i
が常に-f
の後に来るようにする必要があります。
Safe-rmをインストールします:brew install safe-rm
rm
を引き続き使用できますが、次のステップでRM_BIN
を変更しました
~/.profile
(またはbash_profileなど)を編集し、次のコードスニペット(alias
とfunction
を含む)を配置します。
alias rm="rm_i"
function rm_i(){
RM_BIN=safe-rm # you can replace it with regular rm if you like
args=""
files=""
argsDone=0 # to make sure arguments are before the files
for var in "$@"
do
if [[ $var == \-* ]] ; then
if [ $argsDone -eq 1 ] ; then
$RM_BIN # just to show the usage of rm
return
fi
args+=" $var"
else
argsDone=1
files+=" $var"
fi
done
args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
$RM_BIN $args $files
}
最後に、logout
およびlogin
なので、.profileの更新が適用されます。 しないでくださいログアウト/ログインの前に使用してください!
-rf
および正規表現で機能します。rm -rf
[〜#〜] [〜#〜]を使用したい場合は、すべてのファイル/フォルダーに対して要求されることなく、/bin/rm -rf
(またはsafe-rm -rf
インストールした場合)。rm -rf
またはrm *
;)