ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

bottom(btm)Shell 自动补全完全指南:支持 Bash、Zsh、fish、PowerShell、Elvish、Fig 与 Nushell

bottom(btm)Shell 自动补全完全指南:支持 Bash、Zsh、fish、PowerShell、Elvish、Fig 与 Nushell bottombtmShell 自动补全完全指南支持 Bash、Zsh、fish、PowerShell、Elvish、Fig 与 Nushell【免费下载链接】bottomYet another cross-platform graphical process/system monitor.项目地址: https://gitcode.com/GitHub_Trending/bo/bottombottom 是一个跨平台的图形化进程/系统监控工具命令行可执行文件名为btm其发布包内置了Bash、Zsh、fish、PowerShell、Elvish、Fig、Nushell七种 shell 的自动补全文件覆盖了主流交互式 shell 与新兴 shell。本文以官方文档 docs/content/usage/autocomplete.md 为主体结合仓库构建脚本与打包配置完整讲解补全文件的获取、安装、验证方式以及这些补全文件在源码中是如何自动生成的——读完你即可在自己的 shell 环境中启用btm的命令行补全并为其他命令行参数快速导航。补全文件与 shell 对照发布版二进制文件随附的补全文件按 shell 命名官方文档给出的对应关系如下Shell补全文件名说明Bashbtm.bash老牌 POSIX shellZsh_btm文件名以下划线开头符合 Zsh 补全函数惯例fishbtm.fishfish 的补全定义文件PowerShell_btm.ps1Windows PowerShell 脚本Elvishbtm.elvElvish shell 的补全脚本Figbtm.tsFig 集成使用的 TypeScript 补全规格Nushellbtm.nuNushell 的补全脚本从仓库的构建脚本 build.rs 可以看到这些文件并非手写维护而是在构建时由clap_complete及其扩展包统一生成七个生成调用与上表一一对应// build.rs generate_completions(Shell::Bash, mut app, completion_out_dir)?; generate_completions(Shell::Zsh, mut app, completion_out_dir)?; generate_completions(Shell::Fish, mut app, completion_out_dir)?; generate_completions(Shell::PowerShell, mut app, completion_out_dir)?; generate_completions(Shell::Elvish, mut app, completion_out_dir)?; generate_completions(Fig, mut app, completion_out_dir)?; generate_completions(Nushell, mut app, completion_out_dir)?;对应的构建依赖在 Cargo.toml 中声明clap_complete 4.6.9、clap_complete_nushell 4.6.1、clap_complete_fig 4.5.2、clap_mangen 0.3.2。这意味着补全内容与btm的命令行定义见 src/options/args.rs 中基于clapderive 的BottomArgs始终保持同步——新增、改名或删除某个 CLI 参数后重新构建即可得到准确的新版补全文件。分 shell 安装步骤补全文件位于 release 发布页的压缩包内下文“获取补全文件”一节详述。解压后按对应 shell 安装Bash将btm.bash移动或复制到以下任一位置# 按用户配置目录安装 $XDG_CONFIG_HOME/bash_completion/btm.bash # 或系统级安装 /etc/bash_completion.d/btm.bash重新打开终端或source ~/.bashrc后输入btm --并按 Tab 即可看到补全提示。Zsh将_btm移动到你$fpath中的任意一个目录例如mkdir -p ~/.oh-my-zsh/completions # 以 oh-my-zsh 为例 mv _btm ~/.oh-my-zsh/completions/之后执行compinit或重启终端使其生效。注意文件名必须保持_btm前缀下划线形式Zsh 依赖该命名约定加载补全函数。fish将btm.fish安装到 fish 的补全目录mv btm.fish ~/.config/fish/completions/fish 会在启动时自动加载该目录下的补全定义。PowerShell将_btm.ps1的内容添加或在 profile 中 dot-source到你的 PowerShell 配置文件profile中# 在 PowerShell 中查看 profile 路径 echo $PROFILE # 将 _btm.ps1 的内容写入该文件或直接 dot-source . ./_btm.ps1ElvishElvish 使用btm.elv。将其放入 Elvish 的补全搜索路径通常是~/.config/elvish/相关目录后在 Elvish 中即可获得btm的参数补全。FigFig 使用btm.tsTypeScript 补全规格。将文件导入 Fig 的补全目录后在 VS Code 终端等 Fig 支持的终端中即可享受带参数说明的补全菜单。NushellNushell 使用btm.nu通过source加载source btm.nu加载后即可在 Nushell 中对btm进行参数补全。获取补全文件补全文件的获取途径有两条release 二进制包内release 页面提供的各平台压缩包中已随附补全文件按上文对应关系取出即可。completion.tar.gz稳定版与 nightly 版本都额外提供单独的completion.tar.gz其中打包了全部七个补全文件适合不想下载完整二进制的场景例如只在远程机器上安装补全或需要手工分发到多台主机时。源码侧补全文件是如何生成的理解生成机制有助于你判断补全文件与当前二进制是否匹配以及如何为自定义构建生成补全。构建时自动生成bottom 通过 build.rs 在cargo build时自动生成补全与 manpage。触发条件是设置环境变量BTM_GENERATE为非空值例如官方打包文档 docs/content/contribution/packaging-and-distribution.md 给出的命令BTM_GENERATEtrue cargo build --release --locked执行后补全文件默认输出到target/tmp/bottom/completion/manpage 输出到target/tmp/bottom/manpage/。若文件已存在重新构建时可通过修改/删除生成文件或更换BTM_GENERATE的值如true→true2来触发重新生成。自定义输出目录默认目录可通过环境变量覆盖COMPLETION_DIR补全文件输出目录MANPAGE_DIRmanpage 输出目录相关变量定义在 build.rslet completion_dir option_env!(COMPLETION_DIR).unwrap_or(./target/tmp/bottom/completion/); let manpage_dir option_env!(MANPAGE_DIR).unwrap_or(./target/tmp/bottom/manpage/);这一设计同样记录在 docs/content/contribution/development/build_process.md 中。补全以src/options/args.rs中统一的BottomArgs定义单个文件为唯一事实来源args.rs 顶部注释也说明了保持单文件以便构建脚本引用的原因。包管理器安装时的自动部署如果你通过 .deb / .rpm 包安装 bottom补全文件会在安装时被自动放到系统标准位置无需手工操作。仓库 Cargo.toml 中的打包元数据展示了目标路径Debiandebcompletion/btm.bash→/usr/share/bash-completion/completions/btmcompletion/btm.fish→/usr/share/fish/vendor_completions.d/btm.fishcompletion/_btm→/usr/share/zsh/vendor-completions/RPMgenerate-rpm与 deb 相同的三个目标路径也就是说deb/rpm 安装完成后Bash、Zsh、fish 用户只需重新登录或重开终端即可直接使用补全而手工解压二进制包的用户则需要按上文的安装步骤操作。验证与常见问题验证 Bash 补全新终端中输入btm --he后按 Tab应自动补全为--help。验证 Zsh 补全执行compinit后输入btm -按 Tab应列出所有短选项。补全不生效时依次检查文件是否放在了当前 shell 实际读取的目录Bash 的bash_completion.d、Zsh 的$fpath、fish 的completions/补全文件版本是否与btm二进制版本匹配从同一 release 或同一completion.tar.gz中取出Zsh 下文件名是否为_btmPowerShell 下 profile 是否已重新加载。小结bottom 对 shell 补全的支持做到了“开箱即用 源码级可复现”日常用户从 release 或completion.tar.gz取出对应文件即可启用七种 shell 的补全需要自行构建或打包的开发者则可以通过BTM_GENERATE环境变量在构建时一次性生成全部补全与 manpage并通过COMPLETION_DIR、MANPAGE_DIR控制输出位置。补全内容始终由 src/options/args.rs 中的 clap 参数定义驱动生成保证了补全与真实 CLI 行为的一致性和长期可维护性。【免费下载链接】bottomYet another cross-platform graphical process/system monitor.项目地址: https://gitcode.com/GitHub_Trending/bo/bottom创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表