Thefuck

简介

thefuck 是一个开源的命令行工具,用于自动纠正终端中的错误命令。它通过分析最近执行的命令和错误信息,提供一个或多个可能的正确命令,用户可以选择自动执行或手动确认。

安装与配置方法

#创建conda虚拟环境
conda create  -n env_name
#激活创建的环境
source activate env_name

激活进入到虚拟环境里执行安装命令

#使用pip命令执行安装
pip install thefuck
#在shell配置文件中添加初始化代码
echo 'eval $(thefuck --alias)' >> ~/.bashrc
source ~/.bashrc
#也可修改别名,避免敏感词汇
eval $(thefuck --alias fix)
#配置之后执行修复命令无需确认,可以选择性配置
export THEFUCK_REQUIRE_CONFIRMATION=false

基础使用示例

输入一条错误的命令,示例cat查看文本文档再输入fuck修复命令

$ caa /etc/passwd  返回结果:bash: caa: command not found...
#输入修复命令
$ fuck
#返回如下参数 $ cat /etc/passwd [enter/↑/↓/ctrl+c] 此时,正确的命令是cat,按回车确认
#输入错误的yum命令
$ yun install net-tools 返回结果:bash: yun: command not found...
#输入修复命令后
$ yum install net-tools [enter/↑/↓/ctrl+c] #此时显示正确的参数
../../../_images/thefuck.gif

补充

历史修正

#thefuck 可以使用历史记录来更正以前的命令。例如,如果你想修正三条命令前的错误
 $ fuck 3

自定义部分配置示例

#thefuck的配置文件位于 ~/.config/thefuck/settings.py。你可以在这里修改一些默认设置,例如:

#这个参数指定了 thefuck 应用的规则列表。thefuck 会根据这些规则来修正命令错误。如果没有特别指定,thefuck 会使用所有默认的规则
 rules = [<list_of_rules>]
 require_confirmation = True
 wait_command = 3
#例如:
 rules = ['sudo', 'no_command', 'missing_argument']  表示只启用 'sudo''no_command'  'missing_argument' 这三个规则
#下列参数指定在修正命令之前是否需要用户确认。如果设置为 True,thefuck 会在执行修正命令之前提示用户确认。如果设置为 False,thefuck 会自动修正并执行命令而不需要用户确认
 require_confirmation = True
#wait_command = 3:这个参数指定 thefuck 在执行修正命令之前等待的时间(单位:秒)。这是为了给用户提供一个时间窗口来取消修正操作。如果你不需要这个延迟,可以设置为 0
 wait_command = 0

综上示例所述,这些设置帮助你更灵活地控制 thefuck 的行为

rules = ['sudo', 'no_command', 'missing_argument']
require_confirmation = True
wait_command = 3

编写自定义规则

可以编写自己的规则来处理特定的命令错误。在 ~/.config/thefuck/rules/ 目录中创建一个新的 Python 文件。 示例,创建一个 git_no_branch.py 文件:

from thefuck.utils import replace_argument, for_app
from thefuck.specific.git import git_support

@git_support
def match(command):
     return ('error: src refspec master does not match any' in command.output)
@git_support
def get_new_command(command):
    return replace_argument(command.script, 'master', 'main')

参考资料

Contributor:A君


最后更新: 2025 年 06 月 30 日