我习惯rm
使用更安全的东西的别名。
我一直在使用osx-trash
,但是一旦我升级到 Ruby 1.9.2,它就停止工作了。
我了解trash-cli
Python,但我更喜欢将文件移动到 OS X 中的“垃圾”文件夹而不是其他目录。
有人有好的解决办法吗?
答案1
对于 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
答案2
hasseg.org/垃圾是 Objective-C 实用程序,例如osx-垃圾。
我编写了一个 shell 函数,它不会像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
}
答案3
简介(可以跳过)
对我来说rm -i
这就足够了,因为它会在删除任何文件之前提示你。不过,提供一些额外的安全保护safe-rm
也不错。
简单alias
点赞rm=safe-rm -i
可以就足够了,但是rm -rf
不起作用,因为-i
被覆盖了-f
。
因此,我们必须确保这一点-i
始终如一-f
!
我的解决方案(3个步骤):
安装 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 中的更新被应用。不在注销/登录之前使用它!
笔记:
- 只需稍加修改即可应用于任何 Linux 发行版。
- 它不会让您的员工感到沮丧。它只是在删除每个文件之前询问您!
- 它与正则表达式一起工作
-rf
。 - 如果你真的想使用
rm -rf
没有询问您是否仍然可以使用每个文件/文件夹/bin/rm -rf
(或者safe-rm -rf
是否已经安装它)。 - 不再无意
rm -rf
或者rm *
;)