Linux---More命令 初级实现
Linux: more
已实现:more filename , quit不需要回车
未实现:command | more 重定向 ,显示百分比
Waiting。。。
/*
Linux: more
已实现:more filename , quit不需要回车
未实现:command | more 重定向 ,显示百分比
Waiting。。。
*/
#include<stdio.h>
#define PAGELEN 24
#define LINELEN 512
void do_more( FILE * );
int see_more();
int main( int ac,char *av[] ){
FILE * fp;
if( ac== )
do_more( stdin );
else{
while( --ac )
if( (fp=fopen(* ++av,"r"))!=NULL ){
do_more( fp );
fclose( fp );
}
else{
exit( );
}
}
return ;
} void do_more( FILE *fp ){
char line[ LINELEN ];
int num_of_lines = ;
int see_more(),reply;
while( fgets( line,LINELEN,fp ) ){
if( num_of_lines == PAGELEN ){
reply = see_more();
if( reply == ){
break;
}
num_of_lines -= reply ;
}
if( fputs( line,stdout )==EOF ){
exit( );
}/* 标准输入输出 */
num_of_lines ++;
}
} int see_more(){
int c;
system ("stty -F /dev/tty cbreak");/*打开/dev/tty作为输入终端,并且控制属性为不需要回车*/
printf("\033[7m more?\033[m");
while( (c=getchar())!=EOF ){
if( c=='q' ){
return ;
}
if( c==' ' ){
return PAGELEN;
}
if( c=='\n' ){
return ;
}
}
system ("stty -F /dev/tty -cbreak");/*恢复终端属性为需要回车*/
return ;
}
Linux---More命令 初级实现的更多相关文章
- <linux常用命令>初级版
显示时间 date 显示日历cal 变换目录 cd 显示当前所在目录 pwd 建立新目录 mkdir -p a/b/c 删除空目录 rmdir 当前目录下文件和目录显示 ls 复制 cp 文件 路径 ...
- 【初级】linux rm 命令详解及使用方法实战
rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...
- 【初级】linux mv 命令详解及使用方法实战
mv:移动文件或者将文件改名 前言: mv是move的缩写,顾名思义是移动.它的功能既能移动文件/文件夹,又可以用来改名,经常用来做文件的备份,比如再删除之前,先给文件做备份(保护数据)也是linux ...
- 马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)
马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文 ...
- Linux useradd 命令介绍
Linux useradd 命令介绍 作者: Alan Formy-duval 译者: LCTT Brooke Lau | 2020-01-06 22:58 使用 useradd 命令来添加用户(并且 ...
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- Linux常用命令(一)
Linux常用命令 1. pwd查看当前路径(Print Working Directory) [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...
- Linux下命令行安装weblogic10.3.6
Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...
- Linux paste命令
Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [-s][-d <间隔字符>][--help][--versi ...
- 20145222《信息安全系统设计基础》Linux常用命令汇总
学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...
随机推荐
- <转载>批处理之FOR语句祥解
批处理之FOR语句祥解 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号) FOR 参数 %%变量名 IN ...
- 资源汇集:nginx教程从入门到精通
http://linux.cn/article-4279-1.html
- 第六篇、AVplayer定制视频播放控件
1.引用头文件#import AVFoundation 2.自定义AVPlayer(播放的机器) 3.自定义AVPlayerItem(胶片) >> 视频的URL转成AVAsset 4.AV ...
- header函数
header函数 主要用于对http协议头设置相关信息 设置浏览器显示编码(解决乱码) header("Content-type:text/html;charset=utf-8") ...
- spring aop配置及用例说明(2)
欢迎交流转载:http://www.cnblogs.com/shizhongtao/p/3473362.html 这里先介绍下几个annotation的含义, @Before:表示在切入点之前执行. ...
- C++与Lua交互(二)
上一篇我们搭建好了整个的项目环境,现在,我们一起探索一下如何将lua寄宿到C++中. 宿主的实现 我们在LuaWithCPPTest项目下,查看Source.cpp代码如下: #include < ...
- Windows内存原理与内存管理
WIndows为每个进程分配了4GB的虚拟地址空间,让每个进程都认为自己拥有4GB的内存空间,4GB怎么来的? 32位 CPU可以取地址的空间为2的32次方,就是4GB(正如16位CPU有20根寻址线 ...
- 在使用masm32 rc编译资源文件.rc出现的问题
fatal error RC1004: unexpected end of file found 很蛋疼.然来是.h宏定义文件中.最后一行加个回车键即可.否则就提示这错误.
- 自己写的一个分页控件类(WinForm)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- C#反编译工具 ILSPY-x64可动态调试-君临汉化版
程序基于著名的ILSpy version 2.1.0.1603 汉化,并增加x64下debugging功能;初衷是网上只有一版是原作者留下的x86版本,实在不想在虚拟机里调试,只有自己动手弄一份x64 ...