如今,有相当多的命令行工具(或工具套件)使用命令行界面,每个命令都以应用程序/工具的名称开头,后跟一个空格和几个可用的“子命令”之一。例如,Git 有许多不同的子命令:“git status”、“git init”、“git fetch”、“git commit”等。
我能想到的也使用这种模式的其他几个项目是:
- 流浪者(“流浪者上升”,“流浪者毁灭”,“流浪者状态”)
- go(lang)(“go run”,“go vet”,“go fmt”,“go build”)
- svn (“svn 签出”,“svn 更新”,“svn 提交”)
- crosstool-ng (“ct-ng 帮助”、“ct-ng 构建”、“ct-ng 菜单配置”)
- repo (“repo 同步”,“repo 帮助”,“repo 初始化”)
但这远非一份完整的清单。
一些不使用此模式的命令行应用程序示例(但如果设计稍有不同就可以):
- pacman(Arch Linux 的包管理器。使用标志样式的“子命令”,与我询问的模式相反。“pacman -Q”、“pacman -S”、“pacman -R”等)
- portage/“emerge”(Gentoo 的包管理器)
- ImageMagick(它不使用单独的子命令,而是使用单独的命令. “转换”、“导入”、“动画”、“比较”、“复合”等)
我的问题是“这种‘子命令’风格的命令行界面模式是否有专门的名称,如果有,它是什么?”
答案1
在Go 编程语言Brian W. Kernighan 和 Alan AA Donovan 对该go
工具的描述是“利用‹瑞士军刀› 风格,包含十几个子命令»(第 290 页)。