zsh中的双重rm验证


15

当我在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

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

我怎样才能拥有zsh验证?


3
使用rm -f ./*。默认情况下,rm除非您没有对该文件的写许可权,否则不询问任何内容。也许你有一个alias rm='rm -i'
斯特凡Chazelas

哦,一定是这样-我正在Vagrant Shell中运行删除操作,并且文件托管在便携式计算机文件系统中。谢谢
ardochhigh 2014年

2
请注意,zsh仍会提示“ rm -rf *”,可以通过setopt rmstarsilent
Matt

Answers:


29

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

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

因为您没有-i在命令行上传递,rm所以大概是rm -i它的别名(它也可以是函数,非标准的包装器命令或其他别名,但是rm -i到目前为止,别名似乎是最合理的)。一些默认配置包括alias rm='rm -i'在它们的外壳初始化文件中。这可能是您的发行版或系统管理员设置的,或者是您从某处拾取并添加到配置文件中却忘记了的东西。检查您~/.zshrc的别名定义rm。如果找到一个,请将其删除。如果找不到,请添加命令以删除别名:

unalias rm

6

禁用双重验证的正确命令似乎是setopt rm_star_silent。要启用双重验证,请执行以下操作setopt no_rm_star_silent

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


unsetopt rm_star_silent
evandrix

1

如果您使用的是oh-my-zsh,则common-aliases插件包含rm -i别名。

https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/common-aliases/common-aliases.plugin.zsh


1
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能无效。- 来自评论
jayhendren '16

@jayhendren-这不是指向文档的链接,而是指向要解决该问题的安装项的链接……
Wouter Verhelst
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.