TheFuck 是一个命令行工具,可自动纠正先前控制台命令中的错误。当命令失败时,用户可以键入 fuck,TheFuck 会根据错误输出来建议更正,让用户无需重打整个命令即可快速修复拼写错误、权限问题或语法错误。
本文档提供了 TheFuck 架构、核心组件和功能的概述。它解释了 TheFuck 如何使用其基于规则的系统和 Shell 集成来识别和更正命令错误。有关详细的安装说明,请参阅 安装,有关基本用法示例,请参阅 基本用法。
来源: README.md1-9 setup.py54-57
TheFuck 的运作原理很简单:当命令失败时,它会分析错误输出并应用规则来建议更正。然后,用户可以接受或拒绝这些更正,TheFuck 会执行更正后的命令。
来源: README.md14-24
此图说明了 TheFuck 如何处理和纠正错误的命令
来源: README.md196-201
来源: README.md196-201 README.md383-434
TheFuck 从 Shell 历史记录中检索失败的命令及其输出。 Command 类封装了命令脚本、其输出以及用于进一步处理的部件。
| 组件 | 描述 |
|---|---|
命令 | 表示用户命令及其输出 |
get_command | 从历史记录中检索失败的命令 |
get_output | 捕获命令的错误输出 |
来源: README.md196-201
规则系统是 TheFuck 功能的核心。每条规则都定义了一个用于匹配特定命令错误并提供更正的模式。
每条规则实现两个主要函数
match(command):确定规则是否适用于失败的命令get_new_command(command):生成更正后的命令来源: README.md202-350 README.md383-434
TheFuck 与不同的 Shell 环境集成,以访问命令历史记录、执行命令和创建别名。
别名系统使用户能够使用 fuck 命令调用 TheFuck。典型的设置是
来源: README.md154-161
TheFuck 可通过配置文件或环境变量进行配置。
| 设置 | 描述 | 默认 |
|---|---|---|
rules | 已启用的规则列表 | 所有默认规则 |
exclude_rules | 已禁用的规则列表 | 无 |
require_confirmation | 运行前需要确认 | True |
wait_command | 命令输出的最大等待时间 | 可变 |
alter_history | 将修复的命令推送到历史记录 | True |
priority | 规则优先级字典 | 可变 |
配置可以在 ~/.config/thefuck/settings.py 中进行,或通过环境变量(如 THEFUCK_RULES)进行。
来源: README.md438-501
TheFuck 的默认行为需要时间来重新运行先前的命令。Instant 模式通过使用 script 工具记录输出,然后读取日志,而不是重新执行命令,从而提高了性能。
启用方式
目前,Instant 模式仅支持 Python 3 和 Bash 或 Zsh。
来源: README.md526-543
TheFuck 可以通过自定义规则进行扩展。用户可以通过在 ~/.config/thefuck/rules/your-rule-name.py 中定义 Python 函数来创建自己的规则。
自定义规则必须实现
match(command):如果规则适用,则返回 Trueget_new_command(command):返回更正后的命令第三方包也可以通过创建名为 thefuck_contrib_* 的包来提供规则,这些包具有特定的结构。
来源: README.md383-434 README.md505-523
来源: setup.py24-36