Linux: more
已实现:more filename , quit不需要回车
未实现:command | more 重定向 ,显示百分比
Waiting。。。

 1 /*
 2 Linux: more
 3 已实现:more filename , quit不需要回车
 4 未实现:command | more 重定向 ,显示百分比
 5 Waiting。。。
 6 */
 7 #include<stdio.h>
 8 #define PAGELEN 24
 9 #define LINELEN 512
10 void do_more( FILE * );
11 int see_more();
12 int main( int ac,char *av[] ){
13     FILE * fp;
14     if( ac==1 )
15         do_more( stdin );
16     else{
17         while( --ac )
18             if( (fp=fopen(* ++av,"r"))!=NULL ){
19                 do_more( fp );
20                 fclose( fp );
21             }
22             else{
23                 exit( 1 );
24             }
25     }
26     return 0;
27 }
28
29 void do_more( FILE *fp ){
30     char line[ LINELEN ];
31     int num_of_lines = 0;
32     int see_more(),reply;
33     while( fgets( line,LINELEN,fp ) ){
34         if( num_of_lines == PAGELEN ){
35             reply = see_more();
36             if( reply == 0 ){
37                 break;
38             }
39             num_of_lines -= reply ;
40         }
41         if( fputs( line,stdout )==EOF ){
42             exit( 1 );
43         }/* 标准输入输出 */
44         num_of_lines ++;
45     }
46 }
47
48 int see_more(){
49     int c;
50     system ("stty -F /dev/tty cbreak");/*打开/dev/tty作为输入终端,并且控制属性为不需要回车*/
51     printf("\033[7m more?\033[m");
52     while( (c=getchar())!=EOF ){
53         if( c=='q' ){
54             return 0;
55         }
56         if( c==' ' ){
57             return PAGELEN;
58         }
59         if( c=='\n' ){
60             return 1;
61         }
62     }
63     system ("stty -F /dev/tty -cbreak");/*恢复终端属性为需要回车*/
64     return 0;
65 }

View Code

转载于:https://www.cnblogs.com/xxx0624/p/3360130.html

Linux---More命令 初级实现相关推荐

  1. linux运维初级课前实战随机考试题含答案(笔试+上机)

    linux运维初级课前随机考试: 一.笔试部分: 1.开机配置服务自启动的文件路径是? 解答: /etc/rc.local 2.网卡配置文件的路径 解答: /etc/sysconfig/network ...

  2. linux的ping命令含义,Linux ping命令详解

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性 基于IMCP协议 常见命令参数 -q 不显示任何传送封包的信息,只显示最后的结果 -n 只输出数值 -R 记录路由过程 ...

  3. linux who命令功能,Linux who命令详解

    who 命令显示关于当前在本地系统上的所有用户的信息.显示以下内容:登录名.tty.登录日期和时间.输入whoami 显示您的登录名.tty.您登录的日期和时间.如果用户是从一个远程机器登录的,那么该 ...

  4. linux 垃圾箱位置,如何将Linux rm命令删除的文件放入垃圾箱

    因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...

  5. linux中jstack命令详解,Linux jstack命令详解

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息. 如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack ...

  6. linux rm -rf删除文件,Linux rm命令详解

    Linux rm命令 Linux rm命令用于删除一个文件或者目录 语法: rm [options] name... 参数解释: -f, --force 强制删除.忽略不存在的文件,不提示确认 -i ...

  7. linux ntpdate代码,Linux ntpdate命令详解

    ntpdate命令用于同步更新互联网时间,或者NTP服务器时间 NTP服务器[Network Time Protocol(NTP)]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源 ...

  8. linux wc -l效率,Linux wc命令详解

    wc常见命令参数 wc -l : 统计行 wc -c: 统计字节数 wc -m:统计字符数,不能与-c同时使用 wc -w:统计字数 wc -L:打印最长长度 注意: wc 可以直接后面跟文件使用,但 ...

  9. linux常用命令(转载)

    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...

  10. linux if 命令判断条件总结

    linux if命令 关于文件属性的判断式 -a 如果文件存在 -b 如果文件存在,且该文件是区域设备文件 -c 当file存在并且是字符设备文件时返回真 -d 当pathname存在并且是一个目录时 ...

最新文章

  1. Memcached 数据缓存系统
  2. NB-IOT物联网平台是如何工作的
  3. js简单正则表达式验证密码
  4. CentOS7查看开放端口命令及开放端口号
  5. mfc用数组怎么存储句柄_指南手机存储不足怎么办?用好这份清理指南你的手机还能再战三年...
  6. TCP数据报结构以及三次握手(图解)
  7. 新能源电动汽车设计与生成
  8. 【转】常见算法在实际项目中的应用
  9. Go语言(Golang)超时机制
  10. ais文件还原到mysql_金蝶kis系列数据库(.ais)打开与账套恢复办法
  11. hexo+github搭建博客(超级详细版,精细入微)
  12. ipad分屏功能怎么开启_iPad 重大更新!14个新功能,每个都很实用
  13. 为什么C语言要有头文件(补充)
  14. Mac idea 导入maven 工程提示 Malformed \uxxxx encoding
  15. HTTP权威指南读后感
  16. 使用PyTorch进行知识蒸馏的代码示例
  17. python pyz_Python pyzfp包_程序模块 - PyPI - Python中文网
  18. ML (Chapter 10): 降维与度量学习
  19. bootstrap3- 导航条 - 慕课笔记
  20. 教程更新20220719

热门文章

  1. 【GPU精粹与Shader编程】(一) 全系列核心知识点总览
  2. Expdp/Impdp 并行导入导出详细测试
  3. RobHess的SIFT代码解析之RANSAC
  4. springboot多数据源使用EntityManager
  5. Python基础之(面向对象初识)
  6. (转)函数作用域,匿名函数,函数式编程,面向过程,面向对象
  7. (13)Python文件操作
  8. Android手机中怎么样在没root的情况下 修改 hosts 文件
  9. ASP.NET Web Pages:Chart 帮助器
  10. 微信授权登录提示不能访问?