Linux more命令的简单实现

来源:互联网 发布:抓小三软件下载 编辑:程序博客网 时间:2024/05/17 08:14

1.more的作用

分页显示文件的内容。

more会显示文件的第一屏内容,在屏幕底部,用反白字体显示文件的百分比和more。这时如果按空格键,接着显示下一屏内容,如果按回车键,显示下一行内容,如果输入"q",结束显示,如果输入"h",显示帮助。

另:当空格键或"q"按下后,程序会立即响应,不需要按回车键。

2.more的用法

$ more filename

$ command | more

$ more < filename           //从标准输入获取要分页显示的内容,而这时more的标准输入被重定向到文件filename

3.more的实现逻辑

------>显示一屏

------>打印[more?]

------>输入Enter,SPACE或者q

------>if   Enter,显示一行

------>if   SPACE,显示一屏

------>if   q,退出

4.用到的主要内容

(1)fopen(filename, mode)函数:以mode方式打开文件filename

(2)fgets(buffer, length, fp)函数:从文件结构体指针fp中每次读取一行数据存入buffer指向的空间,每次最多读length-1

(3)fputs(buffer, fp)函数:将buffer内容输出到fp所指向的文件

(4)getchar()函数:从标准输入读取一个字符

(5)getc(fp)函数:从文件或标准输入读取一个字符,主要看fp是啥

(6)反白字符表示:[nm .........[m

(7)为啥需要用到/dev/tty设备描述文件?

当执行$command | more 时,标准输入已经被重定向到command命令的输出,这样more就会从同一个数据流中读取用户的输入,不需要从键盘输入了,这样就是有问题的。

而/dev/tty是键盘和显示器的设备描述文件,向这个文件写相当于显示在用户屏幕上,读相当于从键盘获取用户的输入,故用此来获得键盘输入。

5.待完善的功能

1.设置的一屏显示24行,未根据终端窗口大小动态调整
2
.只处理了$more filename, $command | more ,未处理 $more < filename
3
.$more filename1, filename2 时未明确显示filename1,filename2
4
.未加入显示百分比
5
.输入空格,q后必须按Enter键,程序才能得到输入
6
.当屏幕上的文字上滚时,反白的more?也跟着上滚,正常情况下显示在屏幕最下方

6.参考书籍

《Unix/Linux编程实践》第一章


0 0
原创粉丝点击