CLI(Command Line Interface)实用程序是Linux下应用开发的基础。Linux提供了cat、ls、copy等命令与操作系统交互;go语言提供一组实用程序完成从编码、编译、库管理、产品发布全过程支持。在开发领域,CLI在编程、调试、运维、管理中提供了图形化程序不可替代的灵活性与效率。
Selpg功能概述
- selpg 是从文本输入选择页范围的实用程序。它从标准输入或从作为命令行参数给出的文件名读取文本输入,允许用户指定来自该输入并随后将被输出的页面范围。在很多情况下,可以避免打印浪费,节省了资源。
- 如用如下的命令,将需要的页面打印出来
$ selpg -s 1 -e 2 input.txt //将input.txt的第一页到第二页输出到屏幕
-
selpg 是以在 Linux 中创建命令的事实上的约定为模型创建的,这些约定包括:
- 独立工作
- 在命令管道中作为组件工作(通过读取标准输入或文件名参数, 以及写至标准输出和标准错误)
- 接受修改其行为的命令行选项
Selpg程序逻辑
“-sNumber”和“-eNumber”强制选项:
selpg 要求用户用两个命令行参数“-sNumber”(例如,“-s10”表示从第 10 页开始)和“-eNumber”(例如,“-e20”表示在第 20 页结束)指定要抽取的页面范围的起始页和结束页。selpg 对所给的页号进行合理性检查;换句话说,它会检查两个数字是否为有效的正整数以及结束页是否不小于起始页。这两个选项,“-sNumber”和“-eNumber”是强制性的,而且必须是命令行上在命令名 selpg 之后的头两个参数
- 程序实现:
if args[1][0] != '-' || args[1][1] != 's' {
fmt.Fprintf(os.Stderr, "%s: Please use format: -s number\n", progname)
os.Exit(1)
}
//获取开始页
start, _ := strconv.Atoi(args[1][2:])
if start < 1 {
fmt.Fprintf(os.Stderr, "%s: Start page cannot be %d\n", progname, start)
os