reubeno/brush

GitHub: reubeno/brush

用 Rust 实现的 bash/POSIX 兼容 Shell,可直接运行现有 bash 脚本和配置,同时提供语法高亮与自动建议等现代交互体验。

Stars: 1857 | Forks: 88



1389 compatibility tests Packaging status Discord invite


`brush` (**B**o(u)rn(e) **RU**sty **SH**ell) 是一个用 Rust 编写的现代 shell,兼容 [bash](https://www.gnu.org/software/bash/) 和 [POSIX](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html)。无需修改即可运行您现有的脚本和 `.bashrc` —— 内置语法高亮和自动建议功能。 ## 概览 ✅ 现有的 `.bashrc` 直接可用 —— 别名、函数、补全等所有内容。
✨ 内置语法高亮和自动建议。
🧪 通过了 [约 1700 个兼容性测试](brush-shell/tests/cases) 以确保与 bash 兼容。
🧩 可通过 `brush_core::Shell` 轻松嵌入到您的 Rust 应用中。

### 快速开始: ``` $ cargo binstall brush-shell # using cargo-binstall $ brew install brush # using Homebrew $ pacman -S brush # Arch Linux $ cargo install --locked brush-shell # Build from sources ``` `brush` 已准备好作为日常主力使用。我们每次更改都会针对 `bash` 进行测试,以保持这种状态。 下面提供了更详细的安装说明。 ## ✨ 功能特性 ### 🐚 `bash` 兼容性 | | 功能 | 描述 | |--|---------|-------------| | ✅ | **50 多个内建命令** | `echo`、`declare`、`read`、`complete`、`trap`、`ulimit` 等 | | ✅ | **完整的展开** | 花括号展开、参数展开、算术展开、命令/进程替换、通配符、`extglob`、`globstar` | | ✅ | **流程控制** | `if`/`for`/`while`/`until`/`case`、`&&`/`\|\|`、子 shell、管道等 | | ✅ | **重定向** | here 文档、here 字符串、文件描述符复制、进程替换重定向 | | ✅ | **数组和变量** | 索引/关联数组、动态变量、标准的知名变量等 | | ✅ | **可编程补全** | 开箱即用支持 [bash-completion](https://github.com/scop/bash-completion) | | ✅ | **作业控制** | 后台作业、挂起/恢复、`fg`/`bg`/`jobs` | | 🔷 | **Trap 和选项** | `DEBUG`/`ERR`/`EXIT` trap 可用;信号 trap 和选项支持正在开发中 | ### ⌨️ 用户体验 | | 功能 | 描述 | |--|---------|-------------| | ✅ | **语法高亮** | 输入时实时高亮 ([reedline](https://github.com/nushell/reedline)) | | ✅ | **自动建议** | 输入时基于历史的提示 ([reedline](https://github.com/nushell/reedline)) | | ✅ | **丰富的提示符** | `PS1`/`PROMPT_COMMAND`,右侧提示符,兼容 [starship](https://starship.rs) | | ✅ | **TOML 配置** | `~/.config/brush/config.toml` 用于持久化设置 | | 🧪 | **附加功能** | `fzf`/`atuin` 支持,zsh 风格的 `precmd`/`preexec` 钩子(实验性),VS Code 终端集成 | ## 安装说明 _当您运行 `brush` 时,它的外观应与您系统上的 `bash` 完全一致:它会处理您的 `.bashrc` 和其他标准配置。如果您想在系统中区分 `brush` 和其他 shell 的外观,您可以编写一个 `~/.brushrc` 文件。_
🍺 使用 Homebrew 安装 (macOS/Linux) Homebrew 用户可以使用 [`brush` formula](https://formulae.brew.sh/formula/brush) 进行安装: ``` brew install brush ```
🐧 在 Arch Linux 上安装 Arch Linux 用户可以从官方的 [extra 仓库](https://archlinux.org/packages/extra/x86_64/brush/) 安装 `brush`: ``` pacman -S brush ```
🚀 通过 `cargo binstall` 安装预编译二进制文件 您可以使用 [cargo binstall](https://github.com/cargo-bins/cargo-binstall) 来安装预编译的 `brush` 二进制文件。安装 `cargo-binstall` 后,您可以运行: ``` cargo binstall brush-shell ```
🚀 从 GitHub 安装预编译二进制文件 我们会将适用于 Linux (x86_64, aarch64) 和 macOS (aarch64) 的 `brush` 预编译二进制文件发布到 GitHub 的官方 [releases](https://github.com/reubeno/brush/releases) 中。您可以手动从那里发布的归档文件中下载并解压 `brush` 二进制文件,或者使用 GitHub CLI 进行下载,例如: ``` gh release download --repo reubeno/brush --pattern "brush-x86_64-unknown-linux-gnu.*" ``` 下载适用于您平台的归档文件后,您可以使用 [GitHub CLI](https://cli.github.com/) 验证其真实性,例如: ``` gh attestation verify brush-x86_64-unknown-linux-gnu.tar.gz --repo reubeno/brush ```
🐧 使用 Nix 安装 如果您是 Nix 用户,可以使用注册的版本: ``` nix run 'github:NixOS/nixpkgs/nixpkgs-unstable#brush' -- --version ```
🔨 从源代码构建 要从源代码构建,首先安装一个可用的(且较新的)`rust` 工具链;我们建议通过 [`rustup`](https://rustup.rs/) 进行安装。然后运行: ``` cargo install --locked brush-shell ```
## 相关项目 其他使用非 C/C++ 语言实现的 POSIX 风格 shell: * [`nushell`](https://www.nushell.sh/) — 现代 Rust shell(提供 `reedline`) * [`fish`](https://fishshell.com) — 友好的用户 shell([4.0 版本中的 Rust 移植](https://fishshell.com/blog/rustport/)) * [`Oils`](https://github.com/oils-for-unix/oils) — 兼容 bash 并带有新的 Oil 语言 * [`mvdan/sh`](https://github.com/mvdan/sh) — Go 语言实现 * [`rusty_bash`](https://github.com/shellgei/rusty_bash) — 另一个 Rust 编写的类 bash shell
🙏 致谢 本项目依赖于许多优秀的开源 crate: * [`reedline`](https://github.com/nushell/reedline) — 类 readline 的输入和交互功能 * [`clap`](https://github.com/clap-rs/clap) — 命令行解析 * [`fancy-regex`](https://github.com/fancy-regex/fancy-regex) — 正则表达式支持 * [`tokio`](https://github.com/tokio-rs/tokio) — 异步 runtime * [`nix`](https://github.com/nix-rust/nix) — Unix/POSIX API * [`criterion.rs`](https://github.com/bheisler/criterion.rs) — 性能基准测试 * [`bash-completion`](https://github.com/scop/bash-completion) — 补全测试套件
根据 [MIT 许可证](LICENSE) 授权。
标签:bash, brush-shell, CLI, POSIX, Rust, Shell, WiFi技术, 可视化界面, 威胁情报, 嵌入式, 开发者工具, 开源, 系统工具, 终端, 网络流量审计, 自动补全, 解析器, 语法高亮, 通知系统