The Fuck?拯救手残党!

AI 摘要
本文介绍了一个名为"The Fuck"的命令行工具,可以帮助用户快速纠正命令输入错误。当用户输错命令时,只需输入"fuck"命令,The Fuck会自动纠正错误并执行正确的命令。用户也可以使用一些参数来控制工具的行为,如跳过确认直接执行修正后的命令、递归修正多次错误等。安装和配置工具也比较简单。此外,还介绍了工具的即时模式,可以节省纠正命令所需的时间。总之,该工具能够提高用户在命令行中的效率和准确性。
警告
本文最后更新于 2023-02-07,文中内容可能已过时。
以原文为主
本文翻译并总结了原文档,如有冲突,请以原文档为准!
警告
如无特殊声明,本文所有指令在Debian/Ubuntu系Linux发行版中运行最佳

Linux系统的最佳用法自然是CLI,然而CLI的一大痛点就是——没有图形界面!这不是废话嘛

没有图形界面,就需要用户一个字符一个字符地去敲命令来。由于没有图形界面这么直观,无论是大神还是新手都会时不时犯下一些拼错字符或打错字的低级错误,但大神和新手不同的是,大神会用命令行快捷键来快速纠错,这篇文章“Linux 命令行编辑快捷键” 详细地介绍了命令行中一些快捷键来辅助Linuxer们操作命令。

但,我还是觉得麻烦,输了一长串命令结果要我去慢慢纠错,实在是想骂出声:“Fuck!”

于是,一个极具戏剧性的命令诞生了:TheFuck

example动图

1
2
3
4
5
6
7
8
9
➜ 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
...
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
➜ 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.
...
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
➜ 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)
...
1
2
3
4
5
6
7
8
9
➜ git brnch
git: 'brnch' is not a git command. See 'git --help'.

Did you mean this?
    branch

➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
➜ 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 设置项:

1
2
3
4
5
6
7
8
9
➜ 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请见原文安装部分)

1
2
3
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,再用上下键控制选项,回车键确认修正即可

  1. –yeah

fuck --yeah或者fuck -y跳过确认,直接执行修正后的命令

  1. -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 等终端启动脚本中的别名参数内。

举例如下:

1
eval $(thefuck --alias --enable-experimental-instant-mode)