为什么rm -f要求我在zsh上确认?

时间:2015-01-16 16:13:56

标签: zsh

我正在从Cygwin运行zsh。我的一个shell函数包含一个语句

rm -f somedir/*

(我想删除somedir中的所有非隐藏文件,但不删除目录本身)。但是,我总是被问到:

zsh: sure you want to delete all the files in ... [yn]?

此消息的措辞(注意开头的“zsh:”)表明问题来自zsh,而不是rm。但是,rm是一个外部命令:

$ type rm
rm is /usr/bin/rm

顺便说一句,如果我明确地调用rm作为

,也会出现提示
$ command rm -f somedir/*

zsh中有什么东西,它试图太聪明吗?

1 个答案:

答案 0 :(得分:15)

似乎RM_STAR_SILENT 有效 您可以setopt rmstarsilent告诉zsh不确认rm *

shell选项RM_STAR_SILENT是:

  

在执行rm *rm path/*之前,请勿查询用户。

     

- zshoptions(1): RM_STAR_SILENT


如果你想仅仅在shell函数中暂时生成setopt效果,你可以将它与localoptions一起使用,如下所示:

my-test () {
  setopt localoptions rmstarsilent
  ...
}