The Fuck?拯救手残党!

需求与痛点
Linux系统的最佳用法自然是CLI,然而CLI的一大痛点就是——没有图形界面!这不是废话嘛
没有图形界面,就需要用户一个字符一个字符地去敲命令来。由于没有图形界面这么直观,无论是大神还是新手都会时不时犯下一些拼错字符或打错字的低级错误,但大神和新手不同的是,大神会用命令行快捷键来快速纠错,这篇文章“Linux 命令行编辑快捷键” 详细地介绍了命令行中一些快捷键来辅助Linuxer们操作命令。
但,我还是觉得麻烦,输了一长串命令结果要我去慢慢纠错,实在是想骂出声:“Fuck!”
于是,一个极具戏剧性的命令诞生了:TheFuck
功能
举例以下内容引用自原开发者nvbn
➜ 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
...
➜ 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.
...
➜ 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 brnch
git: 'brnch' is not a git command. See 'git --help'.
Did you mean this?
branch
➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master
➜ lein rpl
'rpl' is not a task. See 'lein help'.
Did you mean this?
repl
➜ fuck
lein repl [enter/↑/↓/ctrl+c]
nREPL server started on port 54848 on host 127.0.0.1 - nrepl://127.0.0.1:54848
REPL-y 0.3.1
...
如果你不怕盲目地运行更正的命令,可以禁用 require_confirmation 设置项:
➜ 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
[sudo] password for nvbn:
Reading package lists... Done
...
安装
依赖
The Fuck依赖Python运行,nvbn给出的依赖项为
- Python (3.4+)
- pip
- Python-dev
安装依赖与本体
通过以下指令安装 (其他发行版Linux请见原文安装部分)
sudo apt update
sudo apt install python3-dev python3-pip python3-setuptools
sudo pip3 install thefuck
原文处的安装命令在最后一个命令的地方加了--user
参数,这意味着The Fuck被安装在当前登录用户目录的.local/bin
,需要添加环境变量才能运行,此处进行了修改,直接root或sudo下安装该包可跳过该过程。
添加别名
建议在.bash_profile
, .bashrc
, .zshrc
或其他终端启动脚本中添加以下命令:eval $(thefuck --alias)
The Fuck已经支持自动添加,只需要在安装完毕后输入两次fuck
即可。
更新
pip3 install thefuck --upgrade
使用
Fuck!
命令执行错误后,高呼一句Fuck输入fuck
,再用上下键控制选项,回车键确认修正即可
参数
- –yeah
fuck --yeah
或者fuck -y
跳过确认,直接执行修正后的命令
- -r
fuck -r
使TheFuck递归修正并执行命令,直到命令执行成功
设置
配置项
TheFuck的配置文件默认是~/.config/thefuck/settings.py
rules
– 启用的规则列表,默认为thefuck.const.DEFAULT_RULES
exclude_rules
– 禁用规则列表,默认为[]
require_confirmation
– 在运行修正后命令之前是否需要确认,默认为True
wait_command
–获取上一个命令输出的最长时间(以秒为单位)
no_colors
– 禁用彩色输出
priority
– 具有规则优先级的字典,优先级priority
较低的规则将先行匹配
debug
– 是否启用调试输出,默认为False
history_limit
– 扫描多少条历史命令,如2000
alter_history
– 是否将修正后命令加入到历史记录,默认为True
wait_slow_command
– 如果它在slow_commands
列表中,则获取上一个命令输出的最大时间(以秒为单位)
slow_commands
–慢命令列表
num_close_matches
– 命令修正建议的最大匹配数,默认为 3。
excluded_search_path_prefixes
– 搜索命令时需要忽略的路径前缀,默认为[]
。
即时模式(实验性)
The Fuck 的默认行为需要时间来重新运行以前的命令。 在即时模式下,The Fuck 通过使用脚本的记录输出接着读取日志来节省时间。
目前,即时模式仅支持带有 bash 或 zsh 的 Python 3。 zsh 的自动更正功能也需要被禁用,以便 thefuck 正常工作。
要启用即时模式,请将
--enable-experimental-instant-mode
添加到.bashrc
、.bash_profile
、.zshrc
等终端启动脚本中的别名参数内。
举例如下:
eval $(thefuck --alias --enable-experimental-instant-mode)