我每天使用终端,我会经常使用rm DirectoryName
。有时候我有点发疯了rm *
。可以想象,这些恶作剧有时会回来打我的脸。有谁知道我如何创建映射rm whatever
,然后将所有内容移到垃圾桶,然后手动删除。
alias rm=/bin/rm -i
应该使您安全地摆脱疯狂。另外-您要rm使用哪个垃圾箱目录?由于Mac OS X为每个卷都有一个垃圾箱目录以及一个用户级别的垃圾箱,因此它变得笨拙。
rm *
或者rm /path/*
我每天使用终端,我会经常使用rm DirectoryName
。有时候我有点发疯了rm *
。可以想象,这些恶作剧有时会回来打我的脸。有谁知道我如何创建映射rm whatever
,然后将所有内容移到垃圾桶,然后手动删除。
alias rm=/bin/rm -i
应该使您安全地摆脱疯狂。另外-您要rm使用哪个垃圾箱目录?由于Mac OS X为每个卷都有一个垃圾箱目录以及一个用户级别的垃圾箱,因此它变得笨拙。
rm *
或者rm /path/*
Answers:
使用rm
移动文件到垃圾桶就像杂草。这很普遍而且令人愉悦,但将来可能对您不利。;)
使用时,您确实需要控制自己rm
。
想象一下,您已经习惯了搬到垃圾桶并养成习惯。当然,您的系统是安全的,但是当您登录到朋友(或妻子或老板)的笔记本上时,必须删除某些内容吗?您实际上将使用rm
real-永久删除这些文件。这是个坏习惯,您需要知道这一点。
因此,安装rmtrash
并养成使用它的习惯:
# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias del="rmtrash" # del / trash are shorter than rmtrash
你可以强迫自己使用的另一件事情rmtrash
,而不是rm
为别名它在你的自定义消息.profile
。
alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"
因此,无论何时使用rm
,都会提示您使用rmtrash
或/bin/rm
。请记住,这只是暂时的,过一会儿您应该删除别名。
永远不要做这样的事情:
$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory
弹出测验:rm
命令将在哪个目录中运行?:)
附:刚刚删除了对这篇文章的一些不必要的编辑,这增加了一些关于别名的废话。
&&
是你的生命线。;
是魔鬼。PS答案是,在上面的示例中,系统上的几乎所有东西都消失了。
brew install trash
rmtrash
它确实很老,最近一次更新是在2003年,它显示了。rm
与相比,它的选项要少得多,如果rmtrash
在辅助卷上说,它将这些文件移动到系统驱动器上用户的废纸folder文件夹中,这对于大型文件可能会花费很长时间。trash
由parth推荐的选项更好,可以解决体积相同的问题,但仍然缺少许多rm
选项。
我可以想到许多方法来编码,但是断然拒绝在答案中键入任何一种。我强烈建议您遏制自己发疯的习惯。如果不能正确使用rm
,则根本不应该养成使用习惯。
这里的根本问题是,即使您在自己的系统上安装了安全网,也只会帮助您保持不良习惯,并且当您某天碰巧遇到另一台没有相同自定义保护功能的计算机时,您将做一些明显的坏事。
正确的解决方案是按rm
原样使用,包括-i
在怀疑全局扩展如何时手动添加参数,并具有良好的系统备份,如果出现严重的用户错误,可以将其还原。试图在宇宙的其余部分不使用的命令中添加“垃圾”是一个半途而废的做法,这是两全其美的做法。
要么使用垃圾桶,要么不使用。使用rm
不会浪费,它会删除。
如果您想使用垃圾桶,那没有任何问题。只是养成使用rmtrash
命令而不是的习惯rm
。这将帮助您的大脑了解正在发生的事情,并且不会使您养成不良习惯,这种不良习惯以后会引起悲伤。
rm
根据定义,从磁盘上删除文件。它不会将其发送到垃圾箱。rm
当您要发送到垃圾桶时,要教自己使用,这会给您带来灾难。如果您想发送到垃圾箱,使用rmtrash
该作业或设计用于该作业的程序,那么以后就不会遇到噩梦。我并不是说使用垃圾桶本质上是错误的,但是如果您要使用垃圾桶,请勿将其连接到不打算使用的垃圾桶上!
brew install rmtrash
并停止使用rm
rmtrash
代替的习惯rm
。
有一些方法可以保护您免受可怕的后果rm
。但是,我同意这里的其他评论者:很少有什么好。
暂时不要相信更改命令环境会有所帮助。例如,您会发现到处都有在线人推荐这样做:
alias rm="rm -i"
要么
function rm()
{
echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm
这是行不通的。期。在许多用例中,这些小技巧将使您痛苦不堪。
我过去避免遭受危险的唯一可靠方法rm
是通过cron在我工作的目录上设置常规备份过程。Raw UNIX可以非常轻松地为您很好地完成此任务,find
结合使用-mtime
和检查在一定时间内或之后已经更新的文件。
cron
独自一人。谢谢:)
使用rmtrash之类的命令行工具,或者使用tat使用appscript的脚本调用Finder进行删除。
在安装rmtras说/ usr / local / bin / rmtrash之后,为bash创建别名
alias rm='rmtrash'
您可以使用\ rm直接调用rm并忽略别名
rmtrash
,请帮自己一个忙,并以自己的名字使用它。永远不要rm
给不喜欢的东西加上别名rm
,它总有一天会咬你的。
rmtrash
与不兼容rm
(不支持类似的命令行参数-r
),因此别名在任何情况下都没有用
rmtrash
为别名是一个坏主意rm
。它们不仅不兼容,而且还会养成不良习惯,并且您会rm
以为仅使用会意外地在另一个系统中使用rmtrash
。
对我来说rm -i
就足够了,因为它会在删除任何文件之前提示您。但是,提供的一些额外安全性safe-rm
并不是一个坏主意。
一个简单的alias
like rm=safe-rm -i
可能就足够了,但是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 *
;)alias rm='sudo rm'
),就像将Uzi绑在菜刀上一样:有一天,当您去切菠萝时,您将获得比讨价还价更多的收益。将rm别名为小于其自身的任何值(例如alias rm='rmtrash'
),就像让您的孩子玩着未武装的手榴弹,而不是教他们实际的东西一样:有一天,当他们遇到一个真实的手榴弹时,他们将不会给予适当的谨慎对待。无论哪种方式-混淆rm都对您的人身安全和公共健康有害!
rm
怎么办?同样,Caleb的观点甚至更有效-如果您习惯了使用安全rm别名的系统,那么您可能会不计后果地使用它,并最终将其用于无别名rm的系统上。
mv /file/to/delete ~./Trash