网站首页 > 技术文章 正文
Magnificent app which corrects your previous console command.
如果你每天需要和终端命令行打交道,希望你能看到这个小工具 thefuck,它是一款使用 Python 写的开源命令行工具 app,旨在纠正你输入的前一个命令行。
如果用一个词来形容 thefuck,那 Magnificent 再合适不过。Github 链接是 https://github.com/nvbn/thefuck。
安装 thefuck
支持 macOS、Linux、Ubuntu / Mint、FreeBSD、ChromeOS、或者可以使用 pip 的其他系统,GitHub 的 readme 有详细说明。
个人在 macOS 上使用 homebrew 安装时遇到两个错误
1.无法安装gbdm的问题
访问 https://mirrors.ustc.edu.cn/gnu/gdbm/ 手动下载指定版本,移动到 ~/Library/Caches/Homebrew 目录下,然后执行 brew install gdbm
2.无法安装Python的问题
执行 brew install Python,然后 brew update 更新软件资源库的列表,brew upgrade 升级软件
列举几个规则
- adb_unknown_command – fixes misspelled commands like adb logcta;
- cat_dir – replaces cat with ls when you try to cat a directory;
- cd_correction – spellchecks and correct failed cd commands;
- cd_cs – changes cs to cd;
- cd_mkdir – creates directories before cd'ing into them;
- cd_parent – changes cd.. to cd ..;
- gem_unknown_command – fixes wrong gem commands;
- some of git
- rm_dir – adds -rf when you try to remove a directory;
- sl_ls – changes sl to ls;
- yarn_alias – fixes aliased yarn commands like yarn ls;
- yarn_command_not_found – fixes misspelled yarn commands;
- yarn_command_replaced – fixes replaced yarn commands;
- yarn_help – makes it easier to open yarn documentation;
自定义规则
添加你自己的规则,命名为 your-rule-name.py,放置 ~/.config/thefuck/rules 目录下,实现必选方法
match(command: Command) -> bool
get_new_command(command: Command) -> str | list[str]
示例自定义 sudo 规则
def match(command):
return ('permission denied' in command.output.lower()
or 'EACCES' in command.output)
def get_new_command(command):
return 'sudo {}'.format(command.script)
# Optional:
enabled_by_default = True
def side_effect(command, fixed_command):
subprocess.call('chmod 777 .', shell=True)
priority = 1000 # Lower first, default is 1000
requires_output = True
详见 GitHub 的 readme
其他用处畅想
- 命令错误后自动复制错误日志到粘贴板,便捷粘贴到浏览器等,用于检索
- 可执行文件没有执行权限,自动设置权限再执行
- 其他观众老爷可以发挥想象
猜你喜欢
- 2024-10-15 微软推广XB1新招:拉朋友入伙奖一年EA Access会籍!
- 2024-10-15 EA Access很可能在年内登陆PS4(ea access hub)
- 2024-10-15 雅虎日本欲32亿美元收购eAccess(雅虎 收购)
- 2024-10-15 EA统一旗下订阅服务名称 "EA Play"更加专注玩家体验
- 2024-10-15 Windows 10 Microsfot Store新增订阅和Timeline功能
- 2024-10-15 EA Access登陆PS4平台 每月5美元 大作无限畅玩
- 2024-10-15 《FIFA15》正式登陆EA Access服务免费游戏库
- 2024-10-15 EA Access会员已可提前游玩《极品飞车 热度》
- 2024-10-15 手摸手带你 Docker 从入门到实践(dockerl)
- 2024-10-15 嵌入式学习总结5(嵌入式课程总结与体会)
- 1517℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 594℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 521℃MySQL service启动脚本浅析(r12笔记第59天)
- 489℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 489℃启用MySQL查询缓存(mysql8.0查询缓存)
- 477℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 456℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 454℃MySQL server PID file could not be found!失败
- 最近发表
-
- PS所有滤镜的说明(六)(ps滤镜详解)
- 5款小白也能用的在线图片编辑器!电商效率飙升就靠它!
- Java变量(java变量有什么作用)
- Java面试常见问题:Java注解(java中的面试题)
- Java编程入门第一课:HelloWorld(java编程从入门到实践)
- Java基础教程:Java继承概述(java里继承的概述)
- java基础之——访问修饰符(private/default/protected/public)
- 如何规划一个合理的JAVA项目工程结构
- 将机器指令翻译成 JavaScript -- 终极目标
- Web 服务器基准测试:Go vs. Node.js vs. Nim vs. Bun
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)