You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用crunch生成自定义密码字典时出现bash: !@#: event not found错误如何解决

报错原因

该报错由Bash的历史展开机制触发:!是Bash默认的历史命令调用符,当未被转义或包裹时,Bash会将!开头的字符串当作历史事件进行匹配,你输入的字符集中包含!@#序列,Bash找不到对应的历史命令就抛出了该错误。
除此之外你输入的字符集还包含反引号、$、&、引号、反斜杠等大量Bash特殊元字符,未做处理的情况下都会被Bash提前解析,不会原样传递给crunch程序,还会引发其他潜在报错。

解决方法

两种方案任选其一即可:

  • 方案1(最推荐):用单引号包裹字符集参数
    单引号会禁用内部所有元字符的特殊含义,内容会原样传递给crunch。因字符集本身包含单引号,需要对内部单引号做特殊处理,修改后命令如下:
crunch 4 4 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+-=[]{}\|'"'"';:/?.>,<' -o out.txt
  • 方案2:临时关闭Bash历史展开
    先执行以下命令关闭历史展开功能:
    set +H
    再运行你原本的crunch命令即可正常执行。如果需要恢复历史展开功能,执行set -H即可。

内容的提问来源于stack exchange,提问作者Aso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:18:03