CLI命令行实用程序开发基础
1、概述CLI(命令行界面)实用程序是Linux下应用开发的基础。正确的编写命令行程序让应用与操作系统融为一体,通过shell或脚本来获得最大的扩展与开发效率。Linux提供了cat ,ls,copy等命令与操作系统交互; go语言提供单个实用程序完成从编码,编译,库管理,产品发布全过程支持;容器服务如docker,k8s提供实用程序支持云服务的开发,部署,监控,访问等管理任务; git,npm.
1、概述
CLI(命令行界面)实用程序是Linux下应用开发的基础。正确的编写命令行程序让应用与操作系统融为一体,通过shell或脚本来获得最大的扩展与开发效率。Linux提供了cat ,ls,copy等命令与操作系统交互; go语言提供单个实用程序完成从编码,编译,库管理,产品发布全过程支持;容器服务如docker,k8s提供实用程序支持云服务的开发,部署,监控,访问等管理任务; git,npm等都是大家比较熟悉的工具。尽管操作系统与应用系统服务可视化,图形化,但在开发领域,CLI在编程,调试,运维,管理中提供了图形化程序不可替代的附加与效率。
2、开发实践
- 程序说明
使用golang开发开发Linux命令行实用程序中的selpg.
selpg这个命令行应用是一个通过指定页来读取输入的文本的程序,这些输入文本可以来自文件或者是另一个进程。
由于这次所要完成的程序是一个命令行程序,遵循命令行程序的基本执行顺序,基本的执行逻辑就是
- 输入命令->处理参数->判断参数是否规范->读取文件->根据参数处理文件->执行输出。
在执行这一系列的操作过程中,都需要对各种情况进行错误抛出并进行报错,进而终止流程。
一个命令行程序要遵守五个准则:准则 1. 输入。准则 2. 输出。准则 3. 错误输出。准则 4. 执行。准则 5. 命令行参数
- 程序执行结果
这里我使用的是一个含有1-1500每行一个数字的文档,并每隔五十行含有一个换页符,使用简单的c++程序完成。
#include<iostream>
using namespace std;
int main(){
for (int i=1;i<1501;i++){
if((i%50)==0) cout<<"\f"<<endl;
cout<<i<<endl;
}
}
1、selpg -s1 -e1 input_file
2、selpg -s1 -e1 < input_file
3、selpg -s10 -e20 input_file >output_file
4、selpg -s10 -e20 input_file 2>error_file
由于没有错误代码所以error_file中没有信息。
5、selpg -s10 -e20 input_file >output_file 2>error_file
6、selpg -s10 -e20 input_file >output_file 2>/dev/null
selpg 将第 10 页到第 20 页写至标准输出,标准输出被重定向至“output_file”;selpg 写至标准错误的所有内容都被重定向至 /dev/null(空设备),这意味着错误消息被丢弃了。设备文件 /dev/null 废弃所有写至它的输出,当从该设备文件读取时,会立即返回 EOF。
输出结果与上图相同。
7、selpg -s10 -e20 input_file >/dev/null
selpg 将第 10 页到第 20 页写至标准输出,标准输出被丢弃;错误消息在屏幕出现。这可作为测试 selpg 的用途,此时您也许只想(对一些测试情况)检查错误消息,而不想看到正常输出。
可以看到无错误信息显示。
8、selpg -s10 -e20 -l66 input_file
9、selpg -s10 -e20 -f input_file
10、selpg -s10 -e20 input_file > output_file 2>error_file &
程序的源码与测试文件详见GitHub:https://github.com/lichen2333/Service_Computing/tree/master/work/src/github.com/selpg
更多推荐
所有评论(0)