zsh中的双重rm验证

tv_*_*gar 20 zsh rm

当我在 zsh 中执行 rm * 时,我得到如下信息:

2014-06-08 10:14:23 $ rm *
zsh: sure you want to delete all the files in /home/assay/assay/log [yn]? y
rm: remove regular file `development.log'? y
Run Code Online (Sandbox Code Playgroud)

首先 zsh 询问我是否确定要删除所有文件,然后 rm 询问每个特定文件。

我如何才能进行 zsh 验证?

Gil*_*il' 32

消息“zsh:确定要删除所有文件”是一个 zsh 功能,特别是通过调用rm带有glob 扩展*something/*之前的参数调用的命令来触发。您可以使用 关闭此功能setopt rm_star_silent

消息“rm:删除常规文件”来自rm命令本身。默认情况下它不会显示,只有在rm使用 option 调用时才会显示-i。如果您不想要此消息,请不要传递该选项。即使没有-irm如果您尝试删除只读文件,也会提示确认(带有不同的消息);您可以通过传递选项来删除此确认-f

由于您没有-i在命令行上传递,rm大概是 for 的别名rm -i(它也可以是函数、非标准包装器命令或不同的别名,但别名rm -i是迄今为止最合理的)。一些默认配置包含alias rm='rm -i'在它们的 shell 初始化文件中;这可能是您的发行版或系统管理员设置的内容,或者您​​从某处获取并添加到配置文件然后忘记的内容。检查你~/.zshrc的别名定义rm。如果找到,请将其删除。如果找不到,请添加删除别名的命令:

unalias rm
Run Code Online (Sandbox Code Playgroud)


小智 6

禁用双重验证的正确命令似乎是setopt rm_star_silent. 要启用双重验证,请执行setopt no_rm_star_silent.

有关更多详细信息,请查看 zshoptionsman zshoptionshttp://linux.die.net/man/1/zshoptions的手册页


Bax*_*Bax 6

我不知道为什么,但以下内容对我有用 - 没有问题

rm -f **
Run Code Online (Sandbox Code Playgroud)

或者,如果涉及目录:

rm -rf **
Run Code Online (Sandbox Code Playgroud)

  • 我**不**推荐这样做。因为打开 `globstarshort` 选项后,`**` 从与 `*` 相同变为与 `**/*` 相同,并递归地删除所有非隐藏文件。 (2认同)