返回文章列表
技术2026年3月20日3 分钟阅读

Mac/Linux 命令动态提示工具

命令工具

CmdHint

Mac/Linux 命令动态提示工具,集命令补全、用法查询、命令执行于一体。在终端中输入命令时即可获得智能提示,按 Tab 触发补全菜单,直接回车执行命令,加 ? 前缀查看命令详细说明。

内置 199 条常用命令,覆盖文件操作、搜索、文本处理、权限管理、进程管理、系统信息、磁盘存储、压缩归档、网络、包管理、版本控制、容器、系统服务、用户管理、安全、实用工具等 17 个分类。


功能特性

智能补全:输入命令前缀按 Tab 弹出候选菜单,显示命令名称、所属分类和中文描述。支持三种匹配策略——前缀匹配(输入 ls 匹配 lslsoflsblk)、子序列匹配(输入 dc 匹配 dockerdocker-compose)、模糊匹配(输入 grpe 也能找到 grep)。

参数补全:输入命令名加空格后按 Tab,显示该命令的常用参数及说明。例如输入 grep 按 Tab 会列出 -r(递归搜索目录)、-i(不区分大小写)、-n(显示行号)等参数。

命令执行:直接输入命令回车即可执行,完整继承终端 TTY,ls 等命令的文件/目录颜色正常显示,支持管道、重定向等 shell 特性。cd 命令也能正常切换目录。

命令查询:输入 ? 加命令名查看详细说明,包括用法语法、所属分类、使用示例和常用参数列表。输入 ?grep -r 可以单独查看某个参数的作用。模糊查询同样有效,输入 ?grpe 也能匹配到 grep

历史记录:命令历史自动持久化到 ~/.cmdhint_history,支持上下方向键翻阅历史,灰色文字自动建议历史命令。


环境要求

  • Python 3.8 或更高版本
  • prompt_toolkit 3.0 或更高版本

安装

[https://github.com/JunJianSyu/cmdhint](https://github.com/JunJianSyu/cmdhint.git)

方式一:一键安装

cd cmdhint
bash install.sh

安装完成后,在任意目录输入 cmdhint 即可启动。如果提示命令未找到,需要将 ~/.local/bin 加入 PATH:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

Bash 用户将 ~/.zshrc 替换为 ~/.bashrc

方式二:直接运行

pip install prompt_toolkit
python3 cmdhint/cmdhint.py

无需安装,只要 prompt_toolkit 依赖满足即可直接运行。

方式三:pip 安装

cd cmdhint
pip install -e .
cmdhint

以开发模式安装,修改代码后无需重新安装。


使用方法

执行命令

直接输入命令回车执行,和普通终端用法一致:

cmdhint ~ ❯ ls -la
cmdhint ~ ❯ grep -rn 'TODO' src/
cmdhint ~ ❯ echo hello | wc -w
cmdhint ~ ❯ cd /tmp

智能补全

输入命令前缀后按 Tab 键触发补全菜单:

cmdhint ~ ❯ gr<Tab>
  grep    [搜索]   在文件中搜索匹配文本的行
  groups  [用户管理] 显示用户所属的组
  groupadd [用户管理] 创建新用户组

输入命令名加空格后按 Tab 补全参数:

cmdhint ~ ❯ grep <Tab>
  -r    递归搜索目录
  -i    不区分大小写
  -n    显示行号
  -l    只显示文件名
  ...

查看命令说明

? 前缀查询命令的完整说明:

cmdhint ~ ❯ ?tar
  tar - 归档和压缩文件(打包/解包)
    用法: tar [options] [archive] [files]
    分类: 压缩归档
    示例:
      $ tar -czf archive.tar.gz dir/
      $ tar -xzf archive.tar.gz
      $ tar -tf archive.tar.gz
    常用参数:
      -c          创建归档
      -x          解压归档
      -z          使用gzip压缩
      -f          指定归档文件名
      -v          显示详细过程

查看特定参数的说明:

cmdhint ~ ❯ ?tar -z
  -z → 使用gzip压缩

内建命令

命令 说明
:list 按分类列出全部 199 条命令
:search <关键词> 按关键词搜索命令,支持搜索命令名、描述和分类
:stats 显示命令数量统计和分类分布
:help 显示帮助信息
:quit:q 退出 CmdHint

Ctrl+C 不会退出程序,只会取消当前输入。Ctrl+D 退出。


命令覆盖范围

分类 命令数 代表命令
文件操作 15 ls, cd, cp, mv, rm, mkdir, touch, ln, tree
文件查看 20 cat, less, head, tail, wc, diff, sort, uniq, cut, vim
搜索 10 find, grep, rg, ag, locate, which, whereis
文本处理 6 sed, awk, xargs, jq, bc
权限管理 6 chmod, chown, sudo, su
进程管理 18 ps, top, htop, kill, lsof, tmux, screen, watch
系统信息 18 uname, whoami, date, env, echo, man, history, alias
磁盘存储 9 df, du, mount, free, lsblk
压缩归档 9 tar, gzip, zip, unzip, bzip2, xz
网络 20 ping, curl, wget, ssh, scp, rsync, netstat, dig, nmap
包管理 15 apt, brew, pip, npm, yarn, cargo, docker
版本控制 1 git
容器 3 docker, docker-compose, kubectl
系统服务 6 systemctl, journalctl, crontab, shutdown
用户管理 6 useradd, userdel, usermod, passwd, groups
安全 7 ssh-keygen, gpg, openssl, md5sum, sha256sum
实用工具 14 clear, sleep, open, pbcopy, xdg-open, source

每条命令均包含中文描述、用法语法、使用示例和常用参数说明。


项目结构

cmdhint/
├── cmdhint.py       # 主程序入口,交互式终端界面
├── commands.py      # 命令数据库(199 条命令)
├── matcher.py       # 模糊匹配和补全核心逻辑
├── install.sh       # 一键安装脚本
├── pyproject.toml   # Python 包配置
├── __init__.py      # 包初始化文件
└── README.md        # 本文档