命令行的生活是如此的 F**K

你是不是经常在终端敲错命令,其实这都是因为该死的终端不配合,不能领会你的意思。

每当这个时候,甚至当你一再敲错的时候,你的内心肯定是崩溃的,一定在默念“……”。

而现在,是让你的终端觉悟的时候了!

有位名为 @liamosaur 的哥们就忍不住对自己的终端发出了愤怒的吼声,并付诸实践:

受此启发, 一位名为 Vladimir Iakovlev 程序员对这个该死的终端发出了致命一击!他以及他的 90 位愤怒的小伙伴们打造出了一个名为 “thefuck” 的神器!

当你的终端没有按你想象的输入命令时,请 fuck 它!

当你的终端没有按你想象的以 sudo 执行命令时,请 fuck 它!

当你的的终端不知道填上显而易见的参数时,请 fuck 它!

当你输入错误的命令时:


  1. puthon
  2. No command 'puthon' found, did you mean:
  3. Command 'python' from package 'python-minimal' (main)
  4. Command 'python' from package 'python3' (main)
  5. zsh: command not found: puthon
  6. fuck
  7. python [enter/↑/↓/ctrl+c]
  8. Python 3.4.2 (default, Oct 8 2014, 13:08:17)
  9. ...

当你忘记输入参数时:


  1. git push
  2. fatal: The current branch master has no upstream branch.
  3. To push the current branch and set the remote as upstream, use
  4. git push --set-upstream origin master
  5. fuck
  6. git push --set-upstream origin master [enter/↑/↓/ctrl+c]
  7. Counting objects: 9, done.
  8. ...

当你输入错误的参数时:


  1. git brnch
  2. git: 'brnch' is not a git command. See 'git --help'.
  3. Did you mean this?
  4. branch
  5. fuck
  6. git branch [enter/↑/↓/ctrl+c]
  7. * master

当你忘记输入 sudo 时:


  1. apt-get install vim
  2. E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
  3. E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
  4. fuck
  5. sudo apt-get install vim [enter/↑/↓/ctrl+c]
  6. [sudo] password for nvbn:
  7. Reading package lists... Done
  8. ...

如果生活是如此的不如意,你可以不断的“教诲”它:


  1. aptget install vim
  2. No command 'aptget' found, did you mean:
  3. Command 'apt-get' from package 'apt' (main)
  4. zsh: command not found: aptget
  5. fuck
  6. aot-get install vim [enter/ctrl-c]
  7. E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
  8. E: Unable to lock the administration directory (/var/lib/dpkg), are you root?

还需要权限?再来!


  1. fuck
  2. sudo apt-get install vim [enter/ctrl-c]
  3. [sudo] password for nvbn:
  4. Reading package lists... Done
  5. Building dependency tree... 0%
  6. ... ...

虐我千百遍 我待如初恋

好了,我想你肯定也想拥有这样的神器,请如此这般……

我要这个神器!

环境需求

首先,你需要这些:

  • python (2.7+ or 3.3+)
  • pip
  • python-dev

安装

然后,在不同的操作系统上(没错,有 Python 的地方就行):

在 Ubuntu 上可以通过 apt 安装:


  1. sudo apt update
  2. sudo apt install python3-dev python3-pip
  3. pip3 install --user thefuck

OS X 上使用 Homebrew 来安装:


  1. brew install thefuck

其它的系统上,只要你有 pip 就行:


  1. pip install --user thefuck

更多的 Linux 发行版,可以看这里

设置别名

上述安装的软件包名字是:“thefuck”——别问我为啥不能直接叫 “fuck”。所以,你可以设置个别名:

Bash

将下述行加入到 .bashrc 或 .bash_profile (用于 OSX):


  1. eval "$(thefuck --alias)"

ZSH

将下述行加入到 .zshrc:


  1. eval "$(thefuck --alias)"

其它的 shell ,包括 powershell,可以参考这里

当然,我觉得我更喜欢给它起个别名叫 “kao”。:D

要让别名立刻生效,你需要用 source 命令,如:


  1. source ~/.bashrc
  2. 或 
  3. source ~/.zshrc

它是怎么让我念头通达的?

thefuck 这个软件包包含了上百个匹配规则,专门用来修改你的那些错误,贴心地将它们修改成应该的样子!

具体有哪些规则,你可以看看这里,或者试试就知道了。

当然,如果你经常犯一些独特的错误,你也可以建立自己的规则,而且不妨提交拉取请求给这个项目,找到和你一样独特的小伙伴们。

还等什么?赶快去装啊!

原文发布时间为:2017-05-03

本文来自合作伙伴“Linux中国”

时间: 2024-08-03 12:55:45

命令行的生活是如此的 F**K的相关文章

六个优雅的Linux命令行技巧

一些非常有用的命令能让命令行的生活更满足 使用 Linux 命令工作可以获得许多乐趣,但是如果您使用一些命令,它们可以减少您的工作或以有趣的方式显示信息时,您将获得更多的乐趣.在今天的文章中,我们将介绍六个命令,它们可能会使你用在命令行上的时间更加值当. watch watch 命令会重复运行您给出的任何命令,并显示输出.默认情况下,它每两秒运行一次命令.命令的每次运行都将覆盖上一次运行时显示的内容,因此您始终可以看到最新的数据. 您可能会在等待某人登录时使用它.在这种情况下,您可以使用 wat

推荐给开发人员的实用命令行工具

作为一名Web开发者,当程序出现问题时日子总不是那么好过.问题可能无处不在,可能是你发送的请求出了错,可能是回复出了错,可能是你使用的某个第三方库出了问题,又或者是一个外部API调用失败了.优秀的工具对于定位问题出在何处有着无可估量的价值,而且能在一开始就帮助我们阻止问题的出现,总的来说能使我们的工作更有效率.命令行工具尤其有用,因为它们非常易于做自动化和脚本处理,能够以各种不同的方式进行组合和重用.本文介绍了6个非常强大且灵活的工具,熟练使用这些工具能使你的生活变得更轻松一些. Curl Cu

5个你可能会忽略的有用命令行工具

不可否认,好的命令行工具可给开发人员带来好处.这篇文章,正如标题所说的那样,将为大家介绍5款超棒的命令行工具. 1.Z 一次安装 甚至忘记了它 得益于它的生产力:Z. OK,但这是怎么一回事呢?好吧,Z可以让你快速从文件夹跳转到文件夹,而无需费心编写完整的绝对或相对路径.为了实现这一目标,它记录了所有你访问的文件夹,然后基于上次使用的频率和时间将它们排名.因此,所有你需要做的是键入 z part/of/path然后敲回车.通过这种方式,Z就会自动引导你到排名最高的匹配. 要安装Z,可以下载 z.

【原创】memcached 中的命令行参数解析

     本文主要是以 memcached 源码为例,讲解如何在 linux 下解析命令行参数.  安装 memcached 后,查看其可用选项:  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 [root@Be

WinRAR命令行参数整理

我的实例: 将D:/wk.doc压缩为:final.rar d:/winrar/rarad:/final.rard:/wk.doc 将final.rar中的wk.doc解压到F:盘 rared:/final.rarF: 将final.rar转换成自解压文件 rarsfinal,rar(默认转换到同级目录下了) 给自解压文件(.exe)添加注释(设置默认解压路径等) rarc-zwk.txtd:/final.exe 直接创建自解压文件: rara-sfxd:/cc.exed:/cc.txt 用法:

命令行下Apache日志统计举例

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1414820 Apache日志统计举例 加些来了解一下如何统计Apache的访问日志,一般可以用tail命令来实时查看日志文件变化,但是各种的应用系统中的日志会非常复杂,一堆长度超过你浏览极限的日志出现在你眼前时,你会觉得非常无奈,怎么办呢?这时可以用grep.sed.awk和sort等筛选工具帮助你解决这个问题.

转 Mac OSX 快捷键&命令行

一.Mac OSX 快捷键 command + shift + c                 打开Finder ctrl+shift                                    快速放大dock的图标会暂时放大,而如果你开启了dock放大 Command+Option+W                将所有窗口关闭 Command+W                             将当前窗口关闭(可以关闭Safari标签栏,很实用)  Command+

Shell或命令行计算数组或文件的行数和列数

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1630920 (一)闲聊Linux Shell 编程 都说中国文化博大精深(例如汉字),但作为操作系统中的佼佼者,Linux虽然时间并不长,但同样也是博大精深.谁也不敢说自己已经熟练的掌握了Linux中所有的内容,除了知识点众多以外,快速的发展和更新使得Linux越来越强大,也使得Linux在短时间内越来越难掌握.所

getopt() 对命令行参数进行分析

getopt() 对命令行参数进行分析 int getopt( int argc, char *const argv[], const char *optstring );         给定了命令参数的数量 (argc).指向这些参数的数组 (argv) 和选项字符串 (optstring) 后,getopt() 将返回第一个选项,并设置一些全局变量.使用相同的参数再次调用该函数时,它将返回下一个选项,并设置相应的全局变量.如果不再有识别到的选项,将返回 -1,此任务就完成了.可以重复调用