cli作业

环境、工具

GoOnline平台、Go语言

设计

本次作业是写一个命令行程序,有全套的c代码,直接翻译为go语言,代码部分比较简单。
详细见Go Online分享链接:
http://139.9.57.167:20080/share/bmd2dne76kvrcg19teq0?secret=false


结构体:

在这里插入图片描述

用flag包解析参数:
在这里插入图片描述
在这里插入图片描述


l型分页:通过输入行数进行分页
在这里插入图片描述
不输入则默认72行
在这里插入图片描述


f型分页:寻找分页符号进行分页
在这里插入图片描述


错误处理:起始页小于1或过大、结束页错小于1或过大或小于起始页、同时存在f和l,则返回错误
在这里插入图片描述

测试

测试直接在go online上测试


1.该命令将把“test1”的第 1 页写至标准输出(也就是屏幕),因为这里没有重定向或管道.
go run main.go -s=1 -e=1 test1.txt
未指定行数,默认为72行/页,由于test1.txt只有21行,所以全部输出。
在这里插入图片描述


2.该命令与示例 1 所做的工作相同,但在本例中,selpg 读取标准输入,而标准输入已被 shell/内核重定向为来自“test1”而不是显式命名的文件名参数。输入的第 1 页被写至屏幕。
go run main.go -s=1 -e=1 < test1.txt
在这里插入图片描述


3.“other_command”的标准输出被 shell/内核重定向至 selpg 的标准输入。将第 10 页到第 20 页写至 selpg 的标准输出(屏幕)。
go run main.go -s=1 -e=2 -l=3 test1.txt |go run main.go -s=1 -e=1 -l=2
在这里插入图片描述


4. selpg 将第 2 页到第 4 页写至标准输出;标准输出被 shell/内核重定向至“test2”。
go run main.go -s=2 -e=4 -l=2 test1.txt > test2.txt
在这里插入图片描述


5. selpg 将第 2 页到第 4 页写至标准输出(屏幕);所有的错误消息被 shell/内核重定向至“error”。请注意:在“2”和“>”之间不能有空格;这是 shell 语法的一部分。
go run main.go -s=2 -e=4 test1.txt 2>error.txt
在这里插入图片描述


6.selpg 将第 2 页到第 4 页写至标准输出,标准输出被重定向至“test2”;selpg 写至标准错误的所有内容都被重定向至“error”。当“test1”很大时可使用这种调用;您不会想坐在那里等着 selpg 完成工作,并且您希望对输出和错误都进行保存。
go run main.go -s=2 -e=4 -l=3 test1.txt >test2.txt 2>error.txt
在这里插入图片描述


7.selpg 将第 10 页到第 20 页写至标准输出,标准输出被重定向至“output_file”;selpg 写至标准错误的所有内容都被重定向至 /dev/null(空设备),这意味着错误消息被丢弃了。设备文件 /dev/null 废弃所有写至它的输出,当从该设备文件读取时,会立即返回 EOF。
go run main.go -s=2 -e=4 -l=4 test1.txt >test2.txt 2>/dev/null
在这里插入图片描述


8.selpg 将第 10 页到第 20 页写至标准输出,标准输出被丢弃;错误消息在屏幕出现。这可作为测试 selpg 的用途,此时您也许只想(对一些测试情况)检查错误消息,而不想看到正常输出。
go run main.go -s=2 -e=4 -l=2 input_file >/dev/null
在这里插入图片描述


9.selpg 的标准输出透明地被 shell/内核重定向,成为“other_command”的标准输入,第 10 页到第 20 页被写至该标准输入。“other_command”的示例可以是 lp,它使输出在系统缺省打印机上打印。“other_command”的示例也可以 wc,它会显示选定范围的页中包含的行数、字数和字符数。“other_command”可以是任何其它能从其标准输入读取的命令。错误消息仍在屏幕显示。
go run main.go -s=2 -e=3 -l=5 test1.txt | go run main.go -s=1 -e=3 -l=1
在这里插入图片描述


10.与上面的示例 9 相似,只有一点不同:错误消息被写至“error”。
go run main.go -s=2 -e=3 -l=5 test1.txt 2>error.txt | go run main.go -s=1 -e=3 -l=1
在这里插入图片描述
再故意重新输入错误指令
go run main.go -s=2 -e=3 -l5 test1.txt 2>error.txt | go run main.go -s=1 -e=3 -l=1
在这里插入图片描述


11.假定页由换页符定界。第 3 页到第 5 页被写至 selpg 的标准输出(屏幕)。
go run main.go -s=3 -e=5 -f test3.txt
在这里插入图片描述


12. go run main.go -s=3 -e=5 -l=3 test1.txt > test2.txt 2>error_file &
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值