4 个版本
0.1.3 | 2021 年 10 月 2 日 |
---|---|
0.1.2 | 2021 年 6 月 16 日 |
0.1.1 | 2021 年 1 月 16 日 |
0.1.0 | 2021 年 1 月 16 日 |
#408 in 操作系统
89KB
2.5K SLoC
RuShell
基于 bogobble 解析器系统构建的 Rust Shell。
它有一些其他 Shell 没有的功能
- 在输入时进行语法和错误高亮。
- 多行编辑
- 原始字符串输入
- 如果未找到变量,则使用默认值
还有很多事情要做,但很多东西都可以正常工作
使用 "cargo install ru_shell" 进行安装
为了设置环境,您需要创建一个名为 "$HOME/.config/rushell/init.rush" 的文件
在文件中放入类似的内容
一个看起来正常的 Shell 提示符
let RU_PROMPT=r#"${USERNAME,rushell} \e33m$PWD\n>>\e0m"#
这里
r#".."#
读取一个原始字符串,其内容在输入时不会被处理。这允许它在每次需要显示提示符时进行处理。\\e
等同于Esc[
,用于表示转义码。33m
/34m
设置颜色0m
将颜色重置为默认值。${varname, default}
如果变量为空,将使用默认值$PWD
直接引用变量,但如果该变量不存在,则会显示错误。$(command args)
执行命令,并将输出视为单个字符串参数。
我通常使用的提示符
let RU_PROMPT= r#"\e1m\e34m${USERNAME,Matt}: :\e32m$(basename $PWD)\n\e34m>>\e0m"#
如果您已安装 starship,可以使用它这样
let RU_PROMPT = r"$(starship prompt)"
RuShell 明确使用的其他环境变量是 "PWD"、"PATH"、"RU_HIGHLIGHT"、"RU_COMPLETE",然而后两个尚未完全确定。
"init.rush" 文件将在每次 Shell 启动时运行,并相当于在会话开始时在文件中输入了所有内容。
用法
一般来说,使用Ru Shell的感觉应该和任何其他shell相似,但有几点值得注意的例外。
块由花括号包围
for x in * {
echo $x
}
if true {
echo Its True
} else {
echo Its False
}
有一个用于取消归属的保留字
disown syncthing --no-browser
赋值器:Export、Let、Set、Push
有四种方式写入变量,它们看起来都一样
let x = a
set x = b
push x = :c
export x = d
echo $x
# prints b:c
下面是它们的作用
- "let" 在当前作用域中创建一个具有适当值的变量
- "set" 在可以的最小作用域中搜索具有给定名称的变量,并用值替换它。如果没有找到,则会在当前作用域中创建一个。
- "push" 搜索变量,并将新值推送到末尾。
- "export" 写入环境变量"
在读取变量时,首先检查当前作用域,然后向外扩展,直到最后的环境变量。
所有赋值器都可以一次分配多个变量。
let x y = a [4 5 6]
for m in $y {
echo $x -- $m
}
打印
a -- 4
a -- 5
a -- 6
变更日志
v0.1.3
- 现在允许使用"#"结束行,使用"##"继续行
- 修复了"\\n"不会在输出中插入新行的问题
- tab补全对于选择程序(使用"./"和"/")有效(待办事项:限制为可执行文件)
依赖项
~4–13MB
~144K SLoC