3个版本
| 0.1.2 | 2023年5月28日 |
|---|---|
| 0.1.1 | 2023年5月28日 |
| 0.1.0 | 2021年5月30日 |
#9 in #compliance
每月 31次下载
515KB
1.5K SLoC
vrsh
一个用Rust编写的简单shell,作为我学习Rust的方式
长期目标/梦想(可能不会实现),达到POSIX合规性 (https://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html)。
可定制提示
要自定义提示,可以设置 PROMPT 变量。这可以通过使用 set var=val 语法来完成,其中 val 是一个字符串,请注意,如果使用单引号 (') 包裹字符串,则字符串内容将被保留,并且将在提示上执行提示扩展,请参阅 提示扩展。如果使用双引号 (") 包裹字符串,则将在字符串上执行标准扩展(注意,这些是在立即评估的,而单引号语法是在每次提示显示时评估的)。
要使提示配置永久化,可以在 ~/.vrshrc 文件中设置 PROMPT 变量(如果不存在,则在应用程序启动时生成)。
提示扩展
目前支持以下提示扩展
%%用于%字符。%n当前用户的用户名。%F{var}用于设置后续文本的前景色,var 必须是受支持的颜色之一(请参阅 提示扩展颜色);或者是一个范围在0-255之间的数字,请参阅 ansi 8位着色。%f重置前景色。%K{var}与%F工作相同,但用于背景色。%k重置背景色。%g根据内置的 git 模块(如下例中所示)打印 git 信息。%d或%/完整地打印当前工作目录。%~打印当前工作目录,但将/home/current_user替换为~/。%~>只打印带有前导/的当前目录(例如,如果当前路径是/var/log,则将打印/log)。如果当前工作目录是/home/current_user,则将打印~/。%-<打印当前目录的父目录(例如,如果在/var/log中,则将打印/var)。如果当前目录是根目录 (/),则不会打印任何内容。
提示符颜色扩展
要测试当前终端中的颜色,可以使用 vrsh-colors 命令,该命令将打印所有 256 种支持的亮色和暗色。以下是命名颜色及其数值:
红色= 1绿色= 2橙色= 3蓝色= 4紫色= 5蓝绿色= 6白色= 7灰色= 8深红色= 9亮绿色= 34亮蓝色= 123粉色= 200黄色= 220
示例
我目前使用的提示符示例如下,虽然它有点冗长。
set PROMPT='%F{blue} %~%f %F{orange} as %f %F{purple}%n%f %g %F{brightgreen} ❯ %f' PROMPT 提供以下提示符:![]()
可以使用 %~< 和 %~> 选项来打印完整路径,但仅突出显示当前目录,例如
set PROMPT='%F{31}%~<%f%F{51}%~>%f%F{214} as%f%F{170}%n%f%g%F{46} ❯%f'
提供以下提示符
![]()
来自 vrsh-colors 命令的示例输出

当前和计划中的功能
目前只实现了一小部分功能,但计划增加更多功能,请随时提出要添加到计划功能列表中的功能建议!
当前和计划中的功能列表
- 执行具有给定参数的程序。
- 支持单引号
' - 没有空格的参数应视为一个参数,例如
"asd""bsd"应被视为一个参数。 - 支持环境变量,例如:
$HOME - 支持注释
# - 命令历史
- 持久化(存储在用户主目录中的历史文件中)。
- 可以通过使用
上箭头回到历史和下箭头前进历史来重复使用命令。
- 一些基本的语法高亮
- 建议之前使用的命令。
- 高亮(有效)命令。
- 高亮字符串。
- 匹配扩展
- 扩展(更多信息请查看https://gnu.ac.cn/software/bash/manual/html_node/Shell-Expansions.html)
- 使用
$()的命令扩展。 - - -> 匹配任何文件。
- 更多...请参阅上述链接
- 使用
- 程序之间的管道
|。 - 重定向
- 从命令输出到文件(
>)。 - 从文件到程序(
<)。
- 从命令输出到文件(
- 内置命令
-
cd -
exit -
alias-
~-> 当前用户的主目录。
-
-
source - 变量,例如:
A="some value"- 特定于程序的变量,例如:
SOME_VARIABLE="some_value" firefox
- 特定于程序的变量,例如:
-
- 自动完成
- 对于历史,请参阅上方。
- 使用
tab完成文件。 - 当有多个选项时,通过按 tab 完成扩展文件。
- 历史中的命令的 tab 完成功能。
- 提示符
- 显示当前路径。
- Git 集成。
- 显示当前用户。
- 显示最后一条命令的结果。
- 右侧也有提示符。
- 支持 starship 集成: https://starship.rs/。
- 使用文件进行配置。
- 能够添加别名。
- 配置颜色方案。
- 自定义提示符
- 后台进程
& - 顺序执行的命令
&&
依赖项
~19MB
~411K SLoC