服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg

CLI 命令行实用程序开发基础

概述:CLI(Command Line Interface)实用程序是Linux下应用开发的基础。正确的编写命令行程序让应用与操作系统融为一体,通过shell或script使得应用获得最大的灵活性与开发效率。Linux提供了cat、ls、copy等命令与操作系统交互;go语言提供一组实用程序完成从编码、编译、库管理、产品发布全过程支持;容器服务如docker、k8s提供了大量实用程序支撑云服务的开发、部署、监控、访问等管理任务;git、npm等都是大家比较熟悉的工具。尽管操作系统与应用系统服务可视化、图形化,但在开发领域,CLI在编程、调试、运维、管理中提供了图形化程序不可替代的灵活性与效率。

selpg

具体要求与说明: 开发 Linux 命令行实用程序

说明

1. 命令格式

selpg [-s startPage] [-e endPage] [-l linePerPage | -f] [-d dest] input_file >output_file 2>error_file

2. 参数

-s:startPage,后面接开始读取的页号
-e:endPage,后面接结束读取的页号
-l:后面跟行数,代表多少行分为一页
-f:该标志无参数,代表按照分页符’\f’ 分页,一般默认72行为一页
-d:“-dDestination”选项将选定的页直接发送至打印机,“Destination”应该是 lp 命令“-d”选项可接受的打印目的地名称
input_fileoutput_file 2error_file:输入文件、输出文件、错误信息文件的名字

(-s和-e是必须的参数,其它为可选参数,-l和-f参数不可能同时出现)

设计

  1. 导入所需包
package main

import (

   "fmt"
   "flag"
   "os"
   "io"
   "bufio"
   "os/exec"

)
  1. 定义结构体
type selpg_args struct
{
   start_page int
   end_page int
   in_filename string
   page_len int
   page_type bool

   print_dest string
}
  1. main函数
func main(){
	var args selpg_args
	get(&args)
	process_args(&args)
	process_input(&args)
}
  1. 实现各个函数的功能
get(&args)	//初始化,定义结构体各个变量的值
process_args(&args)	//检查输入的命令是否合理有效
process_input(&args)	//处理输入的命令

运行使用

使用以下命令

go install github.com/github-user/selpg
selpg [-s startPage] [-e endPage] [-l linePerPage | -f] [-d dest] input_file >output_file 2>error_file

测试结果

按文档 使用 selpg 章节要求测试你的程序
input.txt里面是1到100行的内容分别为1到100的输入文件

  1. $ selpg -s1 -e1 input_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
    一直到72
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  2. $ selpg -s1 -e1 < input_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
    也是输出直到72,后面的图片结果省略22到72的图片
  3. $ other_command | selpg -s10 -e20
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  4. $ selpg -s10 -e20 input_file >output_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  5. $ selpg -s10 -e20 input_file 2>error_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  6. $ selpg -s10 -e20 input_file >output_file 2>error_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  7. $ selpg -s10 -e20 input_file >output_file 2>/dev/null
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  8. $ selpg -s10 -e20 input_file >/dev/null
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  9. $ selpg -s10 -e20 input_file | other_command
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  10. $ selpg -s10 -e20 input_file 2>error_file | other_command
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg

  1. $ selpg -s10 -e20 -l66 input_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  2. $ selpg -s10 -e20 -f input_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  3. $ selpg -s10 -e20 -dlp1 input_file
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg
  4. $ selpg -s10 -e20 input_file > output_file 2>error_file &
    服务计算:使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg

Github链接

github