我之前读到过(找不到参考资料)使用这样的别名是alias rm="rm -i"
非常糟糕的。
这一事实有历史证据或常识解释吗?
我认为这会给用户带来依赖确认提示来检查命令的坏习惯,如果他在另一个没有别名的配置文件上这样做,可能会导致灾难。
答案1
你说得对。
这很糟糕,因为你习惯了。如果你的系统没有这个功能,而你rm
,它会立即开始删除,你不知道发生了什么。
许多用户习惯于通过 SSH 进入不同的系统;因此使用许多不同的系统(有时没有设置个性化的用户帐户(包括别名))的情况相当常见。
相反,使用 egalias rmi='rm -i'
并学会使用它。如果其他系统上没有设置它,您就不会意外删除文件,并且可以随时返回键入完整命令。
答案2
就像 @Daniel 所说的那样,它本身并没有什么害处,除了让你觉得它会在那里。事实上,它是 CentOS(以及我猜想的 RHEL 的扩展 - 我已经很久没用过它了)机器上的默认设置,这真是太痛苦了在那次演出的剩余时间里,我输入了 /bin/rm,以避免“为没有 root 访问权限的人准备的 Linux”设置。
答案3
我认为最大的危险是人们可能会依赖类似这样的东西来过滤 glob。想象一下,你想从目录中删除一些图像,但不是全部:
rm -i pics/*.jpg
你可以使用它来手动过滤 glob,这完全合理。但是,如果你已经为它设置了别名,并且正在使用,rm
并且碰巧进入了一个没有该别名的 shell 并尝试它……你只是删除了所有图片,哎呀!
我个人也发现这个别名对我的血压有害 ;)。但这只是我个人的看法。
答案4
这是很多根据我过去与数百名用户合作的经验,危害较小:
rm () # must be a function, must require single answer for all targets
{
ls -FCsd "$@"
local reply ; echo -n 'remove[ny]? ' ; read reply
if [ "_$reply" = "_y" ] ; then
/bin/rm -rf "$@" ; else echo '(cancelled)'
fi
}
- 用户接受过正确使用通配符的培训,而不仅仅是使用“*”,然后依靠 y/n 提示来选择文件
rm
当在缺少此功能或别名的其他环境中使用时,使用正确的通配符通常可以避免灾难rm -i
。- 我花更少的时间来恢复用户多次输入“y”的文件
- 用户只需响应一次 - 为其使用提供强烈的积极反馈
- Control-c 中断工作并报告不执行任何操作
- 不是脚本,因此真实性
rm
未受影响,让其他程序无所畏惧。
代码风格大部分与 sh 兼容(除了用于echo .... | tr -d '\012'
bash 之前的 shell),您可以随意制作自己的 bash 专用代码。我发帖不是为了分享代码本身,而是为了分享用户体验随之而来的变化。