---
author: Wxy
category: 技术
comments_data:
- date: '2017-05-03 10:41:12'
  message: U win
  postip: 192.176.1.89
  username: 来自瑞典的 Chrome 58.0|Windows 7 用户
- date: '2017-05-03 11:56:46'
  message: 牛逼
  postip: 124.160.213.227
  username: 来自浙江杭州的 Chrome Mobile 53.0|Android 7.0 用户
- date: '2017-05-03 13:43:29'
  message: cool
  postip: 14.153.78.161
  username: 来自广东深圳的 Chrome 59.0|Windows 7 用户
- date: '2017-05-03 13:57:50'
  message: 。。。。。。。
  postip: 58.213.153.10
  username: Asuraaaaa [Chromium 58.0|Ubuntu]
- date: '2017-05-03 14:24:40'
  message: 没话说……
  postip: 221.12.107.182
  username: 来自浙江台州的 Firefox 53.0|Windows 10 用户
- date: '2017-05-03 14:26:47'
  message: 每当这个时候，甚至当你一再敲错到时候，你的内心肯定是崩溃的，一定在默念“what the fuck”。。。
  postip: 221.12.107.182
  username: 来自浙江台州的 Firefox 53.0|Windows 10 用户
- date: '2017-05-03 14:51:18'
  message: 哈哈！试试去！
  postip: 27.223.99.130
  username: 绿色圣光 [Firefox 53.0|GNU/Linux]
- date: '2017-05-04 09:58:26'
  message: "Installing NVIDIA... error<br />\r\nfuck NVIDIA... further fuck required<br
    />\r\n&nbsp; &nbsp; fuck linux-kernel... fucked<br />\r\n&nbsp; &nbsp; fuck wayland...
    error<br />\r\n&nbsp; &nbsp; fuck gdm... fucked<br />\r\n&nbsp; &nbsp; **Tips:
    All those you just fucked can be done with one fuck upon Linux. Try fuck Linux
    next time :)**<br />\r\nfuck Linux... **Welcome to Windows! We notice that you're
    still using an older version of Windows, please update your system. I think I
    already mentioned this in linux-kernel-source; Can't you read, idiot? Now press
    that damn button. Not the one on"
  postip: 153.99.93.231
  username: 来自江苏的 Chrome 57.0|Windows 7 用户
- date: '2017-05-04 22:28:35'
  message: "pip3 install --upgrade pip<br />\r\npip3 install --user thefuck<br />\r\neval
    &quot;$(thefuck --alias)&quot;"
  postip: 202.99.140.254
  username: Kcptun [Chrome 55.0|Windows 10]
- date: '2017-05-05 09:39:01'
  message: 简直 屌的 不要 不要的&nbsp;&nbsp;fuck it
  postip: 27.17.98.142
  username: jingwang [Chrome 57.0|GNU/Linux]
- date: '2017-05-07 15:55:58'
  message: fuck
  postip: 111.43.240.148
  username: Ghjoker [Firefox 45.0|GNU/Linux]
- date: '2017-05-07 17:28:20'
  message: oh-my-zsh的plugins里面有这个插件，zsh就不用再手动设置了
  postip: 112.10.164.34
  username: OriginCode [Chrome 58.0|GNU/Linux]
- date: '2017-05-08 13:43:59'
  message: 每当出错的时候 只想fuck 全世界。。
  postip: 58.240.74.98
  username: 来自江苏南京的 Chrome 51.0|Windows 7 用户
- date: '2017-05-08 15:37:38'
  message: FUCK
  postip: 218.60.148.103
  username: 来自辽宁沈阳的 Chrome 58.0|GNU/Linux 用户
- date: '2017-05-09 21:22:47'
  message: 那如果fuck也写错了呢？
  postip: 112.64.216.35
  username: 执着的夏风 [Chrome 57.0|Windows 7]
- date: '2017-05-13 14:29:09'
  message: fake
  postip: 110.253.16.253
  username: Kcptun [Chrome 55.0|Windows 10]
- date: '2017-05-21 20:40:44'
  message: fuck
  postip: 123.181.200.149
  username: tenBlackTea [Chrome 58.0|Windows 7]
- date: '2017-05-31 17:01:03'
  message: fuck
  postip: 121.14.142.139
  username: 来自广东东莞的 Chrome 58.0|Mac 10.12 用户
- date: '2017-09-05 09:08:50'
  message: CentOS 7 怎么安装，求详细步骤、
  postip: 101.25.84.158
  username: 来自河北的 Chrome 60.0|Windows 10 用户
count:
  commentnum: 19
  favtimes: 2
  likes: 0
  sharetimes: 0
  viewnum: 16083
date: '2017-05-03 09:42:00'
editorchoice: false
excerpt: "你是不是经常在终端敲错命令，其实这都是因为该死的终端不配合，不能领会你的意思。\r\n每当这个时候，甚至当你一再敲错的时候，你的内心肯定是崩溃的，一定在默念“……”。\r\n而现在，是让你的终端觉悟的时候了！"
fromurl: ''
id: 8471
islctt: false
largepic: /images/p/201705/03/094006s9eoysqgw9z7slzq.jpg
permalink: /article-8471-1.html
pic: /images/p/201705/03/094006s9eoysqgw9z7slzq.jpg.thumb.jpg
related:
- displayorder: 0
  raid: 8478
reviewer: ''
selector: ''
summary: "你是不是经常在终端敲错命令，其实这都是因为该死的终端不配合，不能领会你的意思。\r\n每当这个时候，甚至当你一再敲错的时候，你的内心肯定是崩溃的，一定在默念“……”。\r\n而现在，是让你的终端觉悟的时候了！"
tags:
- 命令行
- fuck
thumb: false
title: 命令行的生活是如此的 F**K
titlepic: true
translator: ''
updated: '2017-05-03 09:42:00'
---

![](/images/p/201705/03/094006s9eoysqgw9z7slzq.jpg)


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


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


而现在，是让你的终端觉悟的时候了！


有位名为 [@liamosaur](https://twitter.com/liamosaur/) 的哥们就忍不住对自己的终端发出了愤怒的[吼声](https://twitter.com/liamosaur/status/506975850596536320)，并付诸实践：


![](/images/p/201705/03/084650rjktt6969979tk8z.jpg)


受此启发， 一位名为 [Vladimir Iakovlev](https://github.com/nvbn) 程序员对这个该死的终端发出了致命一击！他以及他的 [90 位愤怒的小伙伴们](https://github.com/nvbn/thefuck/graphs/contributors)打造出了一个名为 “[thefuck](https://github.com/nvbn/thefuck)” 的神器！


*当你的终端没有按你想象的输入命令时，请 `fuck` 它！*


*当你的终端没有按你想象的以 sudo 执行命令时，请 `fuck` 它！*


*当你的的终端不知道填上显而易见的参数时，请 `fuck` 它！*


当你输入错误的命令时：



```
➜ 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)
...
```

当你忘记输入参数时：



```
➜ 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.
...
```

当你输入错误的参数时：



```
➜ git brnch
git: 'brnch' is not a git command. See 'git --help'.

Did you mean this?
    branch

➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master
```

当你忘记输入 `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
...
```

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



```
➜ aptget install vim
No command 'aptget' found, did you mean:
 Command 'apt-get' from package 'apt' (main)
zsh: command not found: aptget
➜ fuck
aot-get install vim [enter/ctrl-c]
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
Building dependency tree... 0%
... ...
```

![虐我千百遍 我待如初恋](/images/p/201705/03/085931v3zcf73j7schslv7.gif)


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


### 我要这个神器！


#### 环境需求


首先，你需要这些：


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


#### 安装


然后，在不同的操作系统上（没错，有 Python 的地方就行）：


在 Ubuntu 上可以通过 `apt` 安装：



```
sudo apt update
sudo apt install python3-dev python3-pip
pip3 install --user thefuck
```

OS X 上使用 [Homebrew](http://brew.sh/) 来安装：



```
brew install thefuck
```

其它的系统上，只要你有 `pip` 就行：



```
pip install --user thefuck
```

更多的 Linux 发行版，可以看[这里](https://github.com/nvbn/thefuck/wiki/Installation)。


#### 设置别名


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


**Bash**


将下述行加入到 `.bashrc` 或 `.bash_profile` （用于 OSX）：



```
eval "$(thefuck --alias)"
```

**ZSH**


将下述行加入到 `.zshrc`:



```
eval "$(thefuck --alias)"
```

其它的 shell ，包括 powershell，可以参考[这里](https://github.com/nvbn/thefuck/wiki/Shell-aliases)。


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


要让别名立刻生效，你需要用 `source` 命令，如：



```
source ~/.bashrc 
或 
source ~/.zshrc
```

### 它是怎么让我念头通达的？


thefuck 这个软件包包含了[上百个匹配规则](https://github.com/nvbn/thefuck#how-it-works)，专门用来修改你的那些错误，贴心地将它们修改成应该的样子！


具体有哪些规则，你可以看看[这里](https://github.com/nvbn/thefuck#how-it-works)，或者试试就知道了。


当然，如果你经常犯一些[独特的错误](https://github.com/nvbn/thefuck/issues)，你也可以建立自己的规则，而且不妨[提交拉取请求](https://github.com/nvbn/thefuck/pulls)给这个项目，找到和你一样独特的小伙伴们。


还等什么？赶快去**装**啊！


（本文中的例子和图片来自[该项目](https://github.com/nvbn/thefuck)。）