NodeScriptKit项目,简称nsk项目。它是
- 一个社区驱动的,命令小抄项目
- 一个可自由扩展配置,支持订阅,交互式的,服务器辅助脚本汇总集合
- 一个能够节省你大量命令/脚本查找时间的项目
bash <(curl -sL https://sh.nodeseek.com)
- 配置文件采用toml格式,可以使用vscode配合Even Better TOML插件或者一些在线编辑器编辑
- nsk的主配置文件默认位于/etc/nsk/config.toml
- 常用的配置入口包括[local]和[remote],分别代表本地模块文件和远程订阅文件,本地和远程都可以合并/覆盖配置
- 合并配置toml解析后的对象合并,而非文本拼接
- 本地配置文件支持通配符,对匹配到的文件按文件名自然排序后导入
- 默认
/etc/nsk/modules.d/default/*.toml
为官方模块,更新时会清空内容后再更新 - 默认
/etc/nsk/modules.d/extend/*.toml
为用户模块,更新菜单时不会清空内容 - 支持订阅,多个订阅链接会并发加载
模块配置是用户打交道比较多的地方,内容包括脚本和菜单,菜单可以指向子菜单(们)和脚本
[scripts]
# 脚本集合,键值对
memory = "free -h"
disk = "df -hT"
cpuinfo = "cat /proc/cpuinfo"
whoami = "whoami"
hello = "echo \"hello world\""
yabs = "curl -sL yabs.sh | bash"
docker = "bash <(curl -sL 'https://get.docker.com')"
test = "echo '这是一个测试项'"
脚本部分比较简单,是一系列键值对,一个键对应一个字符串的值
[[menus]]
id = "main"
title = "主菜单"
sub_menus = [
"info",
"tool",
"test"
]
[[menus]]
id = "info"
title = "系统信息"
sub_menus = [
"cpu",
"memory",
"disk",
"current-user",
]
[[menus]]
id = "test"
title = "测试项"
script = "test"
如上面所示,main菜单是入口菜单,有3个子菜单,其中info子菜单有进一步的子菜单,而test菜单没有下级,直接指向id为test的脚本
这些菜单id负责穿针引线,落叶归根到脚本id
NodeScriptKit支持合并配置文件且支持订阅远程配置,如果你是在本地调试,可以将新的配置文件放置到/etc/nsk/modules.d/extend/ 目录下,文件扩展名为toml
如果分享给其他用户,可以放到GitHub上并分享为raw文件直链,接受分享的用户可以修改/etc/nsk/config.toml中[remote]/subscribes的配置文本 下面给出一个示例配置,很容易看懂
[scripts]
test1 = "echo test1"
[[menus]]
id = "main"
title = "主菜单"
sub_menus = [
"my-append", # 给主菜单补充新的入口
]
# 新的菜单入口
[[menus]]
id = "my-append"
title = "补充菜单"
sub_menus = [
"test1",
]
[[menus]]
id = "test1"
title = "打印 test1"
script = "test1"
- 鼓励开发者通过pr贡献内容
- 提交的内容主要包括菜单和脚本,菜单放到modules.d下,脚本放到shell_scripts下
- 菜单类要以3位数字开头,安装优先级排序,数值大的内容可以合并/覆盖数值小的
- 脚本类尽量在文件开头写明代码脚本描述,可以参考这个模板文件
- 脚本尽量使用交互式调用