每当我rm
用外壳球一次添加多个项目时,即使模式扩展到超出我预期的可能性甚至是很小的可能性,我也总是会记得添加-i
,但是(当然)我会忘记并且不小心吹走了一些有用的东西。有些人尝试使用别名来解决此问题,例如,alias rm='rm -i'
但我讨厌让rm 始终保持交互式的想法,因为那样我就会养成一直使用的习惯-f
,这显然会破坏整个目标。
我想做的是rm
仅-i
在使用globbing时使用,并且-f
当然要覆盖它-i
,因此我仍然可以像平常一样删除整个目录rm -rf junk
。
因此rm *blah*
,确实会,rm -i *blah*
但是rm blah
会完全按照键入的方式工作。
如果在不同的shell中完成此操作的方式有所不同,我将选择一个答案,该答案为bash 和 zsh 提供方法,而不是仅涵盖一个或另一个的答案。
注意:我实际上并不认为这一定是个好主意;我只是问是否有可能。如果您认为这是一个愚蠢的主意,我很高兴听到您的意见背后的原因,但请不要在答案栏中发布此类评论。真正的答案要么告诉我如何执行此操作,要么解释为什么/不可能(或者可能提供一种替代方法来获得类似结果)。但是,如果您想告诉我为什么这很愚蠢,请发表评论。即使我不同意结论,我也会发表理性的评论。
对于bash,我相信答案是“否”。使用zsh,您可以通过将
—
derobert
noglob
rm别名为noglob my-rm
,然后让my-rm作为检查glob,扩展它并传递-i或不传递-i的脚本来加以利用。不知道,不知道zsh。
@derobert:您肯定听起来很了解zsh。
—
iconoclast 2012年
@iconoclast不,不是zsh,只有Google。奇怪的是,我发现在尝试使用bash进行操作时发现了这一点。:-P
—
derobert
如果您想要看起来像rm但实际上工作不同的东西,我应该编写一个脚本(或别名/功能/功能键)
—
Walter A
myrm
,让该脚本完成您喜欢的事情。
rm -I
就像-i
只有在超过三个文件或-r
传递时才触发。在中bash
,使用Ctrl-x *
键盘快捷键来扩展glob并自己检查。