0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TheFuck:实用的命令自动纠正工具

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-31 10:46 次阅读

The Fuck 是一款功能强大的、Python编写的应用程序,可用于纠正控制台命令中的错误,非常强大。此外,用户还可通过写Python代码的方式自定义修复规则。

更多示例如:

自动识别没有权限,在命令前面添加 sudo:

➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

➜ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
[sudo] password for nvbn:
Reading package lists... Done
...

识别到没有推送到远程分支,自动追加:

➜ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
 
    git push --set-upstream origin master

➜ fuck
git push --set-upstream origin master [enter/↑/↓/ctrl+c]
Counting objects: 9, done.
...

识别到拼写错误:

➜ puthon
No command 'puthon' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
 Command 'python' from package 'python3' (main)
zsh: command not found: puthon

➜ fuck
python [enter/↑/↓/ctrl+c]
Python 3.4.2 (default, Oct 8 2014, 13:08:17)
...

如果你不担心fuck修正的结果是错误的,你可以禁用require_confirmation 选项,让fuck自动运行更正的命令:

➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

➜ fuck
sudo apt-get install vim
[sudo] password for nvbn:
Reading package lists... Done
...

在开发机上可以这么做,在生产机器上最好是谨慎一点,不推荐这么做。

1.安装

在OS X上,可以通过Homebrew(或在Linux上通过Linuxbrew)安装 The Fuck

brew install thefuck

在Ubuntu / Mint上,使用以下命令安装 The Fuck

sudo apt update
sudo apt install python3-dev python3-pip python3-setuptools
sudo pip3 install thefuck

在FreeBSD上,使用以下命令安装 The Fuck

pkg install thefuck

在其他系统上, 使用pip安装 The Fuck

pip install thefuck

2.配置

接下来需要把这个命令写入到启动脚本中,根据你的终端类型,运行相应的命令即可:

Bash

chcp.com 65001 
eval "$(the***pan>"

其中 chcp.com 65001 只有在windows环境下才需要运行。

Zsh:

eval "$(the***pan>"

其他的可见:

https://github.com/nvbn/thefuck/wiki/Shell-aliases

3.原理

其实TheFuck的原理就是规则匹配(正则表达式),如果找到匹配规则的命令,则创建一个命令给用户选择或直接运行。

默认情况下的规则有:

  • cat_dir - 当你尝试cat目录的时候,用ls替换cat;
  • cd_correction – 拼写检查和纠正失败的cd命令;
  • cd_mkdir – 在进入目录之前创建目录;
  • cd_parent – 更改 cd..cd ..
  • dry – 修复类似的重复问题:git git push
  • fix_alt_space – 用空格字符代替Alt + Space;

等等,具体可以在官方文档中找到:
https://github.com/nvbn/thefuck

4. 创建自己的修复规则

要添加自己的规则,在 ~/.config/thefuck/rules 文件夹中,

创建一个文件名为 your-rule-name.py 的规则文件,其中必须包含两个函数:

match(command: Command) - > bool
get_new_command(command: Command) - > str | list[str]

下面是简单的 sudo 规则示例:

def match(command):
    return ('permission denied' in command.output.lower()
            or 'EACCES' in command.output)


def get_new_command(command):
    return 'sudo {}'.format(command.script)

# Optional:
enabled_by_default = True

def side_effect(command, fixed_command):
    subprocess.call('chmod 777 .', shell=True)

priority = 1000  # Lower first, default is 1000

requires_output = True

如果命令运行结果出现 permission denied 或者 EACCES,则执行 sudo xxx.

此外,还可以配置side_effect,如果你配置了enabled_by_default = True,side_effect函数内的操作将会被执行,本例中是对当前目录下的文件夹执行赋权操作: chmod 777 .

大家可以动手试试自己配一个修复命令,还是相当有意思的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4791

    浏览量

    68669
  • 应用程序
    +关注

    关注

    37

    文章

    3275

    浏览量

    57731
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84739
收藏 人收藏

    评论

    相关推荐

    Python命令补全工具argcomplete简介

    在使用Python 命令或者 Python的命令工具的时候,一个痛点是没有补全。比如python -m后面输入包名字,就没有提示,每次想运行一个http server的时候,都需要搜索一下http服务的包名。另外,像pip,p
    发表于 07-04 10:19 453次阅读

    matlab的实用工具命令

    matlab的实用工具命令实用工具 Abcdchk  检测(A、B、C、D)组的一致性 Chop 取n个重要的位置 Dexresp 离散取样响应函数 
    发表于 09-22 15:56

    基于FPGA的错误检测与自动纠正的设计

    本文利用纠错编码的基本知识,提出了一种简单实用的能自动纠正一位错误和检查两位错误的编码方法,并且通过VHDL语言编程,用FPGA器件来实现。在我们自己的嵌入式系统中,EDAC电路
    发表于 01-18 16:29 2678次阅读
    基于FPGA的错误检测与<b class='flag-5'>自动</b><b class='flag-5'>纠正</b>的设计

    学习记忆Linux命令的5大工具解析

    Linux 新手往往对命令行心存畏惧。部分原因是因为需要记忆大量的命令,毕竟掌握命令是高效使用命令行的前提。不幸的是,学习这些命令并无捷径,
    的头像 发表于 12-25 17:24 4627次阅读
    学习记忆Linux<b class='flag-5'>命令</b>的5大<b class='flag-5'>工具</b>解析

    语音识别命令生成工具的应用程序(免费下载)

    可以自己编程写语音命令功能的语音识别命令生成工具的应用程序
    发表于 06-04 10:00 36次下载

    Xilinx软件命令工具:XSCT开发和调试

    了解如何使用XSCT,Xilinx软件命令工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-21 06:02 1.4w次阅读

    Xilinx软件命令工具进行开发和调试

    了解如何使用XSCT,Xilinx软件命令工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-22 06:53 6726次阅读

    Linux网络状态工具ss命令使用详解

    很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分
    的头像 发表于 11-12 15:43 4333次阅读

    Linux命令大全搜索工具大全

    ,增加了一些数据。对他们的辛勤劳动表示敬意,个人希望能本地离线搜索,不喜欢广告,希望得到干净漂亮的预览界面,业余和工作时间需要使用大量的命令,所以干了一件看似比较愚蠢的事情,在回头有空的时候估计能做一个App?或者是命令行帮助工具
    发表于 01-05 08:00 4次下载

    Git常见的误区和命令工具等综述

    Git常见的误区和命令工具等综述
    发表于 08-31 09:51 0次下载

    Golang基于flag库实现一个命令工具

    Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令工具
    的头像 发表于 10-28 09:26 1307次阅读

    新的开源命令工具west

    电子发烧友网站提供《新的开源命令工具west.zip》资料免费下载
    发表于 11-11 09:25 0次下载
    新的开源<b class='flag-5'>命令</b>行<b class='flag-5'>工具</b>west

    Synopsys工具命令中filter的妙用

    在S家的后端设计工具里,包括DC、ICC、ICC2、PT , 大体的命令都是相通的。并且主要命令的命名和分类都是有一定的相似性的(_但是要注意:尽管在相同的命令下,由于输入和参数配置的
    的头像 发表于 06-14 14:57 920次阅读
    Synopsys<b class='flag-5'>工具</b>中<b class='flag-5'>命令</b>中filter的妙用

    TheFuck:Python写的超实用命令纠正工具

    The Fuck 是一款功能强大的、Python编写的应用程序,可用于纠正控制台命令中的错误,非常强大。此外,用户还可通过写Python代码的方式自定义修复规则。 修复效果如下动图所示: 更多示例
    的头像 发表于 11-01 11:35 374次阅读
    <b class='flag-5'>TheFuck</b>:Python写的超实用<b class='flag-5'>命令</b><b class='flag-5'>纠正</b><b class='flag-5'>工具</b>

    jvm内存分析命令工具

    JVM内存分析是Java开发和调优过程中非常重要的一部分。通过对JVM内存分析命令工具的深入了解和使用,可以帮助开发人员识别内存泄漏、性能瓶颈等问题,并对Java应用进行优化。 下面将从不同的角度
    的头像 发表于 12-05 11:07 1207次阅读