banner
Moraxyc

Moraxyc's Rhapsody

Passion Forever! 永远热爱!
twitter
telegram
github
medium
discord server

The Fuck?拯救手残党!

Fuck

注意
本文翻译并简化了原文档水文,如有冲突,请以原文档为准!

Tip
如无特殊声明,本文所有指令在 Debian/Ubuntu 系 Linux 发行版中运行最佳

需求与痛点#

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

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

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

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

功能#

举例以下内容引用自原开发者nvbn#

example 动图

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

参数#

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

举例如下:

eval $(thefuck --alias --enable-experimental-instant-mode)
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。