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

序言

哈喽兄弟们,我们在学习Python的过程中,有这么一款工具,可以轻松纠正我们写错的命令,简直太好用了~

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

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

安装

在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

配置

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

Bash

chcp.com 65001 
eval "$(thefuck --alias)"

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

Zsh

eval "$(thefuck --alias)"

原理

其实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

创建自己的修复规则

要添加自己的规则,在 ~/.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 .

最后

兄弟们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。
那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,以及源代码!
直接在文末名片自取即可~

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

好了今天的分享就到这里结束了,下次见~

### 安装和配置Python开发环境以及thefuck工具 #### 更新系统 为了确保系统的稳定性和兼容性,可以通过 `yum` 命令来更新整个操作系统及其组件。执行以下命令以完成此操作: ```bash sudo yum update -y ``` #### 安装必要工具和库 在安装 Python 开发环境之前,需要先安装一些必要的工具和库,例如 `gcc`, `wget`, 和 `python-devel`。 - **GCC**: GCC 是 GNU 编译器集合的一部分,用于编译 C/C++ 程序以及其他编程语言的程序[^3]。 - **Wget**: Wget 是一种强大的下载工具,支持 HTTP、HTTPS 和 FTP 下载协议。 - **Python-devel**: 这是 Python 的开发头文件和库文件,通常在构建扩展模块时需要用到[^1]。 以下是具体的安装命令: ```bash sudo yum install -y gcc wget python-devel ``` #### 获取并运行 get-pip.py 脚本 Pip 是 Python 的包管理工具,允许开发者轻松地安装和管理第三方库。要安装 pip,可以从官方站点获取 `get-pip.py` 并运行它: 1. 首先使用 `wget` 下载脚本: ```bash wget https://bootstrap.pypa.io/get-pip.py ``` 2. 接下来,使用 Python 执行该脚本来安装 pip: ```bash sudo python get-pip.py ``` 验证 Pip 是否成功安装: ```bash pip --version ``` 如果显示版本号,则说明安装成功[^2]。 #### 使用 Pip 安装 thefuck 工具 Therfuck 是一个非常实用的小工具,它可以纠正你在终端输入错误命令的情况。通过 Pip 安装 Therfuck 很简单,只需运行以下命令即可: ```bash sudo pip install thefuck ``` 完成后,可以测试其功能是否正常工作。例如,在终端中故意输入一个拼错误的命令(如 `gir ls`),然后按下两次 Tab 键查看修正建议。 --- ### 注意事项 - 如果遇到公钥未安装的问题,可能是因为 RPM 包缺少签名认证。此时可尝试重新导入密钥或者忽略校验选项继续安装[^4]。 - 对于 CentOS 或 RHEL 系统而言,某些情况下还需要额外启用 EPEL (Extra Packages for Enterprise Linux) 仓库以便访问更多软件资源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值