命令行命令纠错神器 The Fuck

理论

  • 源码与官方文档GitHub地址:github.com/nvbn/thefuc...
  • 极简概括:使用Python编写的、可扩展规则的、支持在Linux、MacOS上运行的命令行命令纠错工具,当前88.4K star。
  • 应用场景:命令行输错并按了回车,移动光标矫正嫌麻烦,生气了,于是输入f**k指令,智能帮你纠错。
  • 缺点:指令众多并且格式不一,可能会纠正错误。

实操(CentOS、Ubuntu)

  • CentOS安装(踩过坑不报错的安装方式)
sh 复制代码
新版CentOS可用dnf替代yum
yum -y install python3 python3-devel
yum -y install python3-pip python3-setuptools

操作会在~/.local/bin下产生fuck和thefuck的指令
pip3 install thefuck --user

按照官网安装步骤,添加指定配置
vim ~/.bashrc
eval "$(thefuck --alias)"

加载配置文件中的变动
source ~/.bashrc

根据喜好,创建全局可用的软链接
ln -s ~/.local/bin/fuck /bin/fuck
ln -s ~/.local/bin/thefuck /bin/thefuck
  • Ubuntu安装(官方说明的安装方式,可能会安装失败)
sh 复制代码
apt update
apt install python3-dev python3-pip python3-setuptools

pip3 install thefuck --user

vim ~/.bashrc 最后一行添加
eval $(thefuck --alias)
source ~/.bashrc
  • Ubuntu安装(另一种安装方式)
sh 复制代码
apt update
apt install python3-dev python3-pip python3-setuptools

mdkir /test
cd /test
wget https://github.com/nvbn/thefuck/archive/refs/heads/master.zip

pip3 install master.zip

vim ~/.bashrc 最后一行添加
eval $(thefuck --alias)
source ~/.bashrc
  • 使用(纠正命令参数顺序)
sh 复制代码
systemctl firewalld status
Unknown operation 'firewalld'.

fuck
systemctl status firewalld [enter/↑/↓/ctrl+c]
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2025-01-01 21:07:47 CST; 11s ago
     Docs: man:firewalld(1)
 Main PID: 21555 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─21555 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
  • 使用(纠正错误指令)
sh 复制代码
gitt status
-bash: gitt: command not found

fuck
git status [enter/↑/↓/ctrl+c]
fatal: Not a git repository (or any of the parent directories): .git
  • 使用(纠正自定义指令)
sh 复制代码
这里添加一个输出Hello World!的指令
echo 'echo Hello World!' > /usr/local/bin/hw
chmod +x /usr/local/bin/hw

输错
hww
-bash: hww: command not found

纠正
fuck
hw [enter/↑/↓/ctrl+c]
Hello World!
  • 命名多样化 F**k是国外的,也可以扩展为wokao、wocao、wodiu、wori、kao、cao、diu、wow等的词汇(素质不重要,过瘾就行)
sh 复制代码
向全局添加加fuck别名。
vim /etc/profile
alias wokao='fuck'
...

刷新环境变量配置使其生效
source /etc/profile

命令行 or 终端,对文章标题的定义值得深究

  • 终端:
    • 维基百科:zh.wikipedia.org/wiki/%E7%B5...
    • 提炼总结:终端(Terminal)是一种不提供运算处理功能的输入输出设备,是人类用户与计算机交互的设备,终端有些是全电子的,也有些是机电的。所以终端并不单指黑乎乎的命令行窗口,也指连接到主机的外设应用,例如键盘与显示器。
  • 命令行:
    • 维基百科:zh.wikipedia.org/wiki/%E5%91...
    • 提炼总结:命令行界面(Command-line interface,CLI)是通过文本字符与计算机进行交互的工具,例如Windows的cmd,PowerShell,Linux的shell。

Shell 、Bash、Sh

  • Shell:
    • 维基百科:zh.wikipedia.org/wiki/%E6%AE...
    • 提炼总结:因为内核为了保证安全、稳定和抽象复杂化、通常不直接与用户交互,所以才有了Shell。操作系统中提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的层面。因此与之相对的是内核(英语:Kernel),内核不提供和用户的交互功能。可以理解为Shell面向用户与Kernel(类比前端),Kernel面向计算机与Shell(类比后端)。
    • 补充:Shell是命令行解释器的统称,有多种实现方式,例如Bourne Shell 、Bourne Again Shell、C Shell、Z Shell等。
  • Bash(Bourne-Again Shell,推荐使用):
    • 维基百科:zh.wikipedia.org/wiki/Bash
    • 提炼总结:是目前主流的命令处理器,Sh的超集。由1987年由布莱恩·福克斯为了GNU计划而编写,它的二进制程序文件在Linux系统上位于/bin/bash,Linux与Mac OS X v10.4起至macOS Mojave都将它作为默认shell,自macOS Catalina,默认Shell以zsh取代。
  • Sh(Bourne shell):
    • 维基百科:zh.wikipedia.org/wiki/Bourne...
    • 提炼总结:Unix默认的shell,由AT&T贝尔实验室的史蒂夫·伯恩在1977年在Version 7 Unix中针对大学与学院发布的。它的二进制程序文件在大多数Unix系统上位于/bin/sh,Unix版本中,它仍然是root的默认shell。
  • 总结:Shell是为用户提供与操作系统内核通信的服务程序。Bash、Sh是Shell的具体实现。
相关推荐
workflower7 小时前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
野生码农AI实战7 小时前
奇耻大辱,我的网站被挂马,服务器已沦陷三个月
服务器
ShineWinsu7 小时前
对于C++:缓冲区管理的详细解析
linux·c++·面试·编程·笔试·io·缓冲区
jason.zeng@15022077 小时前
服务器磁盘读写效率,网络吞吐量查看,mysql性能调优
服务器·网络·mysql
张小姐的猫7 小时前
【Linux】网络编程 —— 传输层协议 TCP(下)
linux·运维·服务器·网络·tcp/ip·http·php
程序员AlbertTu8 小时前
第2章 上手 Linux:环境与文件操作
linux·运维·服务器
☆凡尘清心☆8 小时前
CentOS Stream 9 源码编译搭建 Zabbix7.0.29 完整部署方案(部署成功)
linux·运维·centos
Escalating_xu8 小时前
【Linux】进程间通信:从匿名管道、FIFO 到共享内存、消息队列与信号量
java·linux·面试
予昊8 小时前
Linux 资源控制实战分析:用 LXC 亲手造一个 “迷你虚拟机“
linux·运维·服务器
allforgood9 小时前
管理网络安全
linux