首页 > 编程语言 >TheFuck—Python写的超实用命令纠正工具

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

时间:2022-12-12 13:55:25浏览次数:57  
标签:thefuck get Python sudo 实用 命令 TheFuck command install

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

 

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

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

最后

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

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

标签:thefuck,get,Python,sudo,实用,命令,TheFuck,command,install
From: https://www.cnblogs.com/hahaa/p/16971815.html

相关文章

  • Python的入门学习Day 16~18——form”夜曲编程“
    Day16Day17time:2021.8.14.​今天七夕。激动,喜悦。平静呼吸,嘻嘻~也许我也是天空。去看课程了,嗯。今天重点学习了循环的对立面——”跳出循环“的操作。一如......
  • Python的入门学习Day 22~24——form”夜曲编程“
    Day22time:2021.8.19.​顺着歌曲的旋律,内心一下子就安静了呢。终于,我可以好好写日记了,徜徉在一片金色的花海里。今天主要学习了匿名函数。这是一种很有趣的函数......
  • Python的入门学习Day 19~21——form”夜曲编程“
    ..Day19time:2021.8.16.​很神奇地,编程和数学渐渐有了交集——今天学习了函数,连模样都像f(x)的形式。比较有区分度的是,在P里,“x"被称为”形式参数“,而所赋的......
  • Python的入门学习Day 28~30——form”夜曲编程“
    Day28inDay29time:2021.8.26.​时间模糊了界限,虽我日渐走远。转眼而过的二十多天,既留下了夏天在沙滩上的足迹,同时也为黄金色的秋日铺上留白的画卷。键盘敲......
  • Python的入门学习Day 25~27——form”夜曲编程“
    Day27time:2021.8.24.​时流轻快,转眼间就载着我到达了学习Python的第27个日子。一开始,我还以为本次学习的全程对我而言小菜一碟——但,当我亲自走过以后,发现这......
  • Python内置函数之enumerate() 函数
    enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中for循环使用enumerate示例1>>>se......
  • 推荐:常见算法的python实现(github上25000多star)
    近日在github上发现一个25000多star的仓库,把各种常见算法用python实现了,而且还有动图演示,非常值得推荐。仓库说明这个仓库用python语言实现了绝大部分算法,主要是用于教学目......
  • Python的入门学习Day 10~13——form”夜曲编程“
    Day10time:2021.8.7.​今天本来打算学习时发现手机应该拿去充电了,再上完J课程之后发现时间确实只留到了晚上呢。但幸好,以我多天的敲代码的牢固根基(哈哈哈),我最终......
  • Python安装TensorFlow-GPU
    选择TensorFlow版本(重要)验证TensorFlow-gpu安装成功安装遇到的问题参考TOC本文主要介绍windows下基于Miniconda下的GPU版本的TensorFlow安装过程以及安装过程中遇到的问......
  • Python安装Pytorch-GPU
    选择Pytorch版本(重要)验证pytorch安装是否成功安装遇到的问题参考TOC本文主要介绍windows下基于Miniconda下的GPU版本的Pytorch安装过程以及安装过程中遇到的问题,本文假......