本页面介绍了 TheFuck 随附的标准规则。这些规则构成了应用程序的核心智能,能够在广泛的场景中自动纠正命令。有关创建自定义规则的信息,请参阅 自定义规则。
TheFuck 中的规则是 Python 模块,用于定义如何检测命令错误并生成更正。每个规则实现两个主要函数:
match(command) - 确定规则是否适用于给定的失败命令get_new_command(command) - 生成更正后的命令建议规则还可以定义可选属性:
priority - 控制规则应用的顺序(值越高,越先检查)enabled_by_default - 布尔值,指示规则是否默认启用来源: thefuck/rules/no_command.py6-41 thefuck/rules/history.py5-15
规则系统是 TheFuck 命令纠正流程中的关键组成部分。当命令失败时,TheFuck 会按顺序应用适用的规则来生成更正建议。
来源: thefuck/rules/no_command.py6-38 thefuck/rules/sudo.py31-47
来源: thefuck/rules/sudo.py1-47 thefuck/rules/cd_mkdir.py1-21 thefuck/rules/hostscli.py1-27
TheFuck 包含各种内置规则,用于处理各种命令行错误。这些可以分为几类:
这些规则处理输入的命令不存在或拼写错误的情况。
来源: thefuck/rules/no_command.py6-41 thefuck/rules/history.py5-15
处理与权限相关的错误的规则。
sudo用于更正常见 Git 错误的规则。
来源: thefuck/rules/git_push.py1-44
用于处理文件系统相关错误的规则。
cd 到不存在的路径时创建目录cd 时尝试更正目录名称中的拼写错误来源: thefuck/rules/cd_mkdir.py1-21 thefuck/rules/cd_correction.py1-61
针对特定命令行应用程序定制的规则。
来源: thefuck/rules/hostscli.py1-27
sudo 是最常用的规则之一,它能检测权限错误并为命令前置 sudo。
该规则能识别不同系统中的各种权限错误消息。
该规则处理三种情况:
sudo)sudo sh -c "..." 中)&& 的命令(包装在 sudo sh -c "..." 中)此规则通过建议类似的可用命令来帮助处理命令未找到的情况。
该规则会在命令历史记录和可用可执行文件中查找相似的匹配项。
来源: thefuck/rules/no_command.py6-41
history 规则具有最高优先级(9999),它会从历史记录中建议与用户输入的错误命令相似的命令。
来源: thefuck/rules/history.py5-15
这是一条针对 Git 用户的专业规则,有助于解决推送分支而未配置上游的常见问题。
该规则解析 Git 错误消息以提取建议的命令并应用它。
来源: thefuck/rules/git_push.py1-44
TheFuck 提供了一些装饰器来增强规则的功能:
@sudo_support此装饰器允许规则在命令前是否加 sudo 前缀的情况下都能正常工作。
使用示例
来源: thefuck/rules/sudo.py31-41 thefuck/rules/no_command.py6-12
@for_app将规则限制为特定的应用程序,通过避免不必要的规则检查来提高性能。
使用示例
来源: thefuck/rules/cd_mkdir.py7-15 thefuck/rules/hostscli.py9-16
@git_supportGit 相关规则的专用装饰器。
使用示例
来源: thefuck/rules/git_push.py6-9
规则具有可选的 priority 属性,用于确定它们被评估的顺序。值越高表示优先级越高。
来自 history.py 的示例
没有显式优先级的规则使用默认值。这确保了更专业的规则(如优先级为 9999 的 history)在更通用的规则(如优先级为 3000 的 no_command)之前被检查。
来源: thefuck/rules/history.py15 thefuck/rules/no_command.py41
每个规则都有相关的测试来验证其功能。这些测试使用 pytest fixtures 来模拟系统组件并确保测试环境的一致性。
sudo 规则的示例测试
来源: tests/rules/test_sudo.py6-20 tests/rules/test_no_command.py19-40
内置规则是 TheFuck 功能的核心,它能在各种场景下提供智能的命令纠正。每个规则都为特定类型的命令行错误实现了有针对性的解决方案,从而创建一个能够自动处理大多数常见错误的全面系统。
有关创建自定义规则以扩展此功能的更多信息,请参阅 自定义规则。