当前位置: 首页 > wzjs >正文

泰安网站设计wordpress 分类采集

泰安网站设计,wordpress 分类采集,网站广告制作,开发公司账务处理文章目录 the fuck是什么如何安装原理模块划分模块介绍处理流程get_corrected_commands是如何工作的 99% 的人都不知道的: 命令行竟然存在 fuck 命令!功能强大 the fuck是什么 thefuck是开源的命令行纠错工具,可以用于纠正执上一条执行错误的…

文章目录

    • the fuck是什么
    • 如何安装
    • 原理
      • 模块划分
      • 模块介绍
      • 处理流程
      • get_corrected_commands是如何工作的

99% 的人都不知道的: 命令行竟然存在 fuck 命令!功能强大

the fuck是什么

thefuck是开源的命令行纠错工具,可以用于纠正执上一条执行错误的指令

在这里插入图片描述

常用Linux的小伙伴可能会遇到这样的问题,在输入指令时总是因为忘了添加sudo

导致权限不足无法执行

在这里插入图片描述

如果指令很长,又忘了Linux光标跳转快捷键,就不得不猛敲键盘手动添加sudo

如果安装thefuck,只需对着键盘一顿fuck

正确的指令就会显示在终端

在这里插入图片描述

此外,thefuck还可以自动帮你输出安装工具

如果shell在执行时发现指令不存在

此时只需输入fuck

终端就会显示相应的纠正指令

在这里插入图片描述

如何安装

既然fuck这么好用,那我该怎么安装呢?

thefuck支持多个操作系统

但不管是你使用的Mac,Linux,还是Windows

他们仨使安装过程都大同小异

下载python环境(大于3.5.0),安装thefuck,配置别名

首先是Windows

打开powershell

输入pip install thefuck

安装thefuck

在这里插入图片描述

随后在powershell的配置文件中写入如下两条指令

$env:PYTHONIOENCODING="utf-8"
iex "$(thefuck --alias)"

重启powershell,即可完成配置

此时你可能会感到疑惑,powershell的配置,这是啥?我没有啊

没关系,只需短短三行指令,1秒解决你的疑惑

打开powershell,输入如下三条指令

echo $profileTest-Path $profileNew-Item -Path $profile -Type File –Force

在这里插入图片描述

在资源管理器中进入目录:C:\Users\<用户名>\Documents\WindowsPowerShell

会发现目录下多出了Microsoft.PowerShell_profile.ps1文件

这就是powershell的配置信息

在这里插入图片描述

每次powershell打开前都会加载该文件

在这里插入图片描述

其次是Linux

依然是先安装thefuck

在终端输入如下指令

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

随后输入vim ~/.bashrc

打开shell的配置文件

并在末尾写入eval $(thefuck --alias)

将fuck作为thefuck的别名

在这里插入图片描述

退出.bashrc,并执行配置文件

此时可以正常使用fuck

看到这里,你可能会觉得,这有啥大不了的,不就是多打了几个字嘛,至于这么折腾?

欸嘿,您可别小看了程序员为了"偷懒"能搞出来的那些事儿。这群家伙为了少敲几下键盘,能想出各种奇葩的破事儿

Guido van Rossum在CWI研究所工作时,受够C那繁琐的语法,为了偷懒,徒手搓了个python。python因其简洁的语法被众多开发者喜爱,开发者们甚至打出了这样的口号,life is short, you need python

Max Howell在Mac上安装软件时受够手动编译依赖的痛苦,为了"偷懒",愣是用Ruby撸了一套管理器,通过brew install一键解决依赖

这里说个小插曲,Google曾因Max Howell不会手写二叉树反转而拒绝其面试。因此只要答对这道题,您就可以超越世界级大牛,问鼎码林之巅

这里,需要额外提一嘴,一个比较操蛋的bug

fuck写错了

如果fuck写错没看出来,傻乎乎的以为下载出错,于是重新装了一遍

找问题配环境一小时,最后发现fuck打成funk,这回可真fuck了

原理

不多BB,先放简化流程图

在这里插入图片描述

模块划分

抛开和不同操作系统交互的模块,聚焦于更核心的逻辑

从宏观上,thefuck可以分为三大模块

解析器,流程控制模块,不同分支处理模块

在这里插入图片描述

分支处理继续细分,可得到help打印,版本打印,指令纠正等等
在这里插入图片描述

模块介绍

解析器Parser,负责读取上一条用户输入的指令

并通过调用parse()方法将指令处理为系统可识别的对象

know_args

在这里插入图片描述

之后,流程控制模块将根据know_args中

不同的数据信息进行不同的分支处理

譬如打印帮助文档

打印版本

打印别名

还有最重要的指令纠正,fix_command

在这里插入图片描述

处理流程

这里我们直接放上完整的流程图

在这里插入图片描述

其他模块无足轻重,让我们进入fix_command一探究竟

首先,thefuck会加载配置信息

在这里插入图片描述

配置信息中包含诸多重要的内容

比如与规则相关的

需要排除的规则内容exclude_rules

用户编写的匹配规则存储路径user_dir

随后thefuck将处理know_args,进一步细化数据

得到系统上一次执行的脚本内容command

在这里插入图片描述

并将command传入get_corrected_commands方法

得到纠正的指令

最后将匹配得到的可能的纠正指令通过UI的方式输出

如此就是fuck纠正指令的完整流程

get_corrected_commands是如何工作的

在这里插入图片描述

get_corrected_commands内部处理逻辑比较简单

  1. 调用get_rules()方法,获取全部的规则
  2. 传入command(thefuck封装的系统上次执行的命令+命令输出结果等信息),调用rule.is_match方法,判断当前rule是否匹配command
  3. 返回所有可能的rule

说白了,get_corrected_commands就是拿着command匹配所有规则,符合留下,不符合滚犊子

那么匹配规则如何确定呢?

我们看一个demo

def match(command):if 'not found' in command.output or 'not installed' in command.output:executable = _get_executable(command)return not which(executable) and get_package(executable)else:return Falsedef get_new_command(command):executable = _get_executable(command)name = get_package(executable)formatme = shell.and_('sudo apt-get install {}', '{}')return formatme.format(name, command.script)

这是一个叫做apt_get.py的规则文件

他存在两个和新方法,分别是matchget_new_command

在thefuck运行过程中,apt_get.py会被加载到内存,封装为rule对象

在thefuck处理得到command后,会调用match方法,判断command是否匹配apt_get.py规则

如果要匹配,那么command在终端输出的报错信息必须是not found或者not install,这样就说明用户输入指令出现的问题是找不到

如果找不到,就需要给出安装指令

那么新指令如何给出呢?——get_new_command

当thefuck成功匹配apt_get.py规则后,在后续显示fix 指令时,会调用get_new_command方法,给出新的指令

apt_get.py而言,他就负责从command中提取指令信息,最终返回sudo apt get install xxx指令

至此,完成所有的指令纠正功能

http://www.dtcms.com/wzjs/840938.html

相关文章:

  • 网站推广优化教程郑州做网站比较好公司
  • 网站同城在线哪里做设计君网站
  • 培训网站开发哪个好网站推广的最终目的是什么
  • gzip网站优化网络营销课程培训
  • 关于书店网站开发实例的书网站的建设ppt模板
  • 个人网站html模板下载金融行业做网站需要什么
  • 专业做网站联系电话seo优化排名教程百度技术
  • 网站后台模板 jquery公关公司排行榜
  • 做58网站怎么赚钱吗考网站开发工程师
  • 兰州网站推广优化网站权限设计方案
  • 网站怎么做反爬虫外链seo推广
  • 平面设计网站大全网站小学校园网站怎么建设
  • 房产中介网站建设管理天津互联网公司排名
  • 无锡游戏网站建设公司网站ps多大尺寸
  • 自己做服务器网站wordpress做排名
  • 网站服务器是干什么的网线制作标准
  • 域名解析网站登录上海网络公司网站建设
  • 阿里云网站商城建设网页制作与网站开发从入门到精通 豆瓣
  • 海曙网站建设网站网络创始人 网站建设
  • 网站上的地图怎么做建设php网站
  • 网站建设介绍ppt模板asp网站建设 win7
  • 专业商城网站设计公司网站如何做宣传
  • 网站制作咨询电话坂田网站设计
  • 做网站 绑定域名营销网站开发公司
  • 网站做不做账帮别人设计网站的网站吗
  • 末备案网站如何做cdn广东装饰网站建设
  • 郑州做网站公司汉狮在线考试类网站怎么做
  • 建设网站前台费用wordpress 插件模板
  • 商城网站制作费用常州网站建设czyzj
  • 镇江市住房与城乡建设局网站农村自建房设计图一层楼平面图