简介
grfsh 是一个用 Rust 编写的 Unix shell。它能运行 bash 风格的脚本,无需任何插件就提供舒适的交互体验,还带有一组表格命令,让管道中传递的是带类型的行。
$ files src -r | where name =~ .rs | sort-by size -r | first 3 | select name sizename sizeshell.rs 14 KBsys.rs 13 KBcheck.rs 8.7 KB你会得到:
- 脚本能力:支持大多数脚本常用的 bash 语法,包括函数、
[[ ]]、case、索引数组和关联数组、参数展开运算符、算术运算、花括号展开、here document、进程替换、trap以及set -euo pipefail。 - 交互式 shell:自动建议、语法高亮、上下文感知的补全、
z命令、缩写(abbreviation),以及支持右侧提示符和瞬态提示符的主题。 - 作业控制:Ctrl-Z、
fg、bg、jobs和wait。 - 带类型的表格:
files、procs、search、load和from产生表格,再用where、sort-by、select、group-by和math过滤和变换。管道中的其他程序收到的仍是纯文本。 - 面向编程代理的模式:不打开分页器、不等待输入、控制输出长度、以 JSON 返回结果,还有持久会话、
timeout、explain和精确的文件编辑。 - 脚本检查器:
grfsh --check script.sh会列出语法错误和 grfsh 不支持的 bash 特性,而不会执行任何内容。
grfsh 只依赖两个 crate:rustyline 和 libc。启动时间约 2 毫秒,在 Linux 上是一个静态二进制文件。