自从用上命令行神器“thefuck”,再也不用担心我敲错命令了

作者:大舒 来源:

https://segmentfault.com/a/1190000002740344

一般而言,能受到广泛关注的开源项目分为这么几类:

分离出去的项目,例如 io.js

解决了痛点的项目,例如 jQuery

提高效率的项目,例如 Anjular.js

大公司的项目或者本来就特别火的项目,例如 .NET

当然也有脑洞大开的项目,比如 SegmentFault 上之前介绍过的《编程语言中的精品——草泥马语》。(你还记得吗?)

https://segmentfault.com/a/1190000000606169

更比如,今天要讲的主角:thefuck。

https://github.com/nvbn/thefuck

开发者都或多或少接触过 linux 接触过命令行,当然肯定也都被命令行狠狠地“fuck”过。我很多时候都是微不足道的原因导致了命令行出错,例如将 python 输入成 ptyhon,例如将 输入成 而导致出错,这个时候我会想说:“fuck”。

起源

开发 thefuck 的这位同仁,恐怕也经常会有这种不和谐的情况。因此开发了这个软件 thefuck。

thefuck 不仅仅能修复字符输入顺序的错误,在很多别的你想说“fuck”的情况下,thefuck 依然有效。

例如以下情况。

案例

任何情况下你想说“我操”,你都可以用得到 thefuck。

例如:

ls 和 sl

使用过 ubuntu 的开发者很多都知道有这么一条命令:sl。这条命令是在你将 ls 错误地输成 sl 时,会在屏幕上快速驶过一辆火车。当然,有了 thefuck,sl 似乎也可以退休了。

忘记 sudo

操作 git

错输命令

选项修正

其他

thefuck 还有其他很多种用法,就等着你去发现。

安装

安装需求

python (2.7+ or 3.3+)

pip

python-dev

安装方法

可以使用 pip 安装:

或者使用 OS X、Ubuntu、Arch 的包管理器安装。

https://github.com/nvbn/thefuck/wiki/Installation

安装后配置

bash:

Zsh、Fish 和 PowerShell 的 配置方法见这里:

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

更新

更新到最新的 thefuck 的方法非常简单:

其他

软件原理

前面说了那么多用法,

那么有人觉得 thefuck 可能只是一个用来

thefuck 进行命令修复的模块名和对应的修复原理如下:

brew_unknown_command:修复命令,例如将修复为

cd_parent:将修正为

cd_mkdir:进入不存在的目录时尝试创建目录。

cp_omitting_directory:时添加选项

fix_alt_space:将所有的的Alt+Space修正为Space。

git_add:修正没有的情况。

git_checkout:不存在的分支之前尝试创建分支。

git_no_command:修正错误的选项,例如。

git_push:如果失败,尝试将修正为。

has_exists_script:为所有的提示不存在的命令尝试添加前缀。

lein_not_task:修正,例如。

mkdir_p:时尝试添加选项。

no_command:修正不存在的命令,例如修正为。

man_no_space:将没有空格的命令添加空格,例如修正为

pacman:arch 系统上,如果使用没有安装的软件,尝试使用或者安装。

pip_unknown_command:修正错误的命令,例如修正为

python_command:当前目录试图执行没有权限的 python 程序时,修复为添加前缀

sl_ls:修正为

rm_dir:如果删除文件夹,为添加选项。

ssh_known_hosts:如果远程主机公钥不匹配,尝试将远程主机公钥从中移除。

sudo:如果提示没有权限,尝试添加。

switch_layout:将键盘布局修正为英语布局。

apt_get:如果不存在命令,尝试使用包管理器安装。

brew_install:修正的格式。

composer_not_command:修正 composer 命令。

没有启用的模块:

ls_lah:为添加选项。

rm_root:为添加选项。

自定义规则

当然,你也可以自定义修正规则:

https://github.com/nvbn/thefuck#creating-your-own-rules

一个自定义规则的案例:

使用须知

虽然 thefuck 带来了很多便利,不过仍然建议注意这件事情:

thefuck 会给出的修正后的命令,但是默认情况下你看到它们的时候,命令都已经默认执行了。

大部分情况下,thefuck 可能给出的是正确的修正,但是小部分情况下,给出的修正并不是你想要的。

所以建议将 中的设置改为 ,这样可以自己决定是否执行修正后的命令。

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181107B0CCZZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券