对命令行工具神器thefuck(工具原名称如此)的大名听了很多次,但一直没有机会尝试。最近在Ubuntu下开发比较多,但因为长期以来命令行动手比较少,总是手残打错命令,效率很低,就想起来试试传说的fuck工具包。这个工具包既表达了程序员打错命令和代码时的气愤与懊恼,又能高效地通过一句命令解决各种常见问题,可谓有益身心,一举两得。
这个工具使用python开发,因此安装时需要先安装python3相关工具,以下命令以ubuntu 18.04系统为例:

  1. sudo apt-get install python3-dev python3-pip
  2. sudo -H pip3 install thefuck

安装完成后,打开~/.bashrc文件给命令添加别名,在alias行下加入下面一行。

  1. alias fuck='eval $(thefuck $(fc -ln -1)); history -r'

下面看看这个工具的强大作用。在你输入命令,打错参数,忘记代码时,只要一句fuck,一切问题迎刃而解,心情顿时舒畅。妈妈再也不用担心你为了记住各种各样的命令头发掉光了。
Linux命令行利器错误修改利器安装配置指南 - 图1

1 输入命令忘记sudo时

$ apt-get install vim
$ E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - open (13: 权限不够)
$ wdsolar@wdsolar-home:~$ fuck
$ sudo apt-get install vim [enter/↑/↓/ctrl+c]

2 敲错命令时

  1. $ pothon3
  2. Command 'pothon3' not found, did you mean:command 'python3' from deb python3-minimal
  3. $ fuck
  4. python3 [enter/↑/↓/ctrl+c]
  5. Python 3.6.9 (default, Nov 7 2019, 10:44:02)

3 输入命令敲错选项时

  1. $ git brnch
  2. git'brnch' 不是一个 git 命令。参见 'git --help'
  3. $ fuck
  4. git branch [enter/↑/↓/ctrl+c]

4 记不住git命令时

  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]

其他任何错误时,都可以试试神器的解决方案,即便是解决不了当下的问题,至少fuck一句出一口闷气,似乎也能轻松不少。当然,如果能更了解神器的原理,也可以更好的发挥他修正命令的功能,少很多无谓的操作。神器的原理大体是这样的:

  1. brew_unknown_command:修复 brew 命令,例如将 brew docto 修复为 brew doctor
  2. cd_parent:将 cd.. 修正为 cd ..
  3. cd_mkdircd 进入不存在的目录时尝试创建目录。
  4. cp_omitting_directorycp 时添加 -a 选项
  5. fix_alt_space:将所有的的Alt+Space 修正为 Space
  6. git_add:修正没有 git add 的情况。
  7. git_checkoutgit checkout 不存在的分支之前尝试创建分支。
  8. git_no_command:修正错误的选项,例如 git brnch
  9. git_push:如果 push 失败,尝试将 git push 修正为 git push --set-upstream origin $branch
  10. has_exists_:为所有的提示不存在的命令尝试添加 ./ 前缀。
  11. lein_not_task:修正 lein,例如 lein rpl
  12. mkdir_pmkdir 时尝试添加 -p 选项。
  13. no_command:修正不存在的命令,例如 vom 修正为 vim
  14. man_no_space:将没有空格的 man 命令添加空格,例如 mandiff 修正为 man diff
  15. pacmanarch 系统上,如果使用没有安装的软件,尝试使用 pacman 或者 yaourt 安装。
  16. pip_unknown_command:修正错误的 pip 命令,例如 pip isntall 修正为 pip install
  17. python_command:当前目录试图执行没有 x 权限的 python 程序时,修复为添加 python 前缀
  18. sl_lssl 修正为 ls
  19. rm_dir:如果删除文件夹,为 rm 添加 -rf 选项。
  20. ssh_known_hosts:如果远程主机公钥不匹配,尝试将远程主机公钥从 know_hosts 中移除。
  21. sudo:如果提示没有权限,尝试添加 sudo
  22. switch_layout:将键盘布局修正为英语布局。
  23. apt_get:如果不存在命令,尝试使用 apt-get 包管理器安装。
  24. brew_install:修正 brew install 的格式。
  25. composer_not_command:修正 composer 命令。