/*
重定向方面存在缺憾(重定向後沒有除錯完成)
stdin時非重定向可用read和write遮蔽部分部分
*/#include #include #include #include #include //lstat
#include //lstat
#include#define pagelen 24
#define linelen 1024
//#define buffsize 8192
void settermattr(); //設定終端屬性
void do_more(file *);
int see_more(file *);
int filesize; //檔案的大小
int readsize; //已經顯示的內容長度
struct termios ts,ots; //終端屬性
int main(int argc,char *argv)
else
else
else
} } }
tcsetattr(stdin_fileno,tcsanow,&ots);//將修改後的終端屬性復原,tcsanow表示修改立即生效
return 0;
}void do_more(file * fp)
/*
* 當用重定向符定向標準輸入時,不能分頁顯示,一下全部顯示出來。故屏掉
* if( fp ==stdin) //將標準輸入寫到標準輸出,read write 包含在unistd.h標頭檔案中
if(n<0)
}else
num_of_lines-=replay;
}if(fputs(line,stdout)==eof)
num_of_lines++;
}//}
}int see_more(file *cmd) /* new: accepts arg */
/* * print message, wait for response, return # of lines to advance
* q means no, space means yes, cr means one line
*/ if ( c == ' ' ) /* ' ' => next page */
if ( c == '\n' ) /* enter key => 1 line */
}return 0;
}void settermattr()
自己編寫more命令
more命令可以實現的功能是很豐富的,包括模式查詢。今天我們只是實現它的乙個基本功能 more 檔案列表 在螢幕正文顯示已讀的百分比 按下回車顯示下一行 按下空格顯示下一屏 按下q退出 按回車 空格 q時沒有回顯 這裡有幾個問題 要在螢幕正文顯示已讀的百分比,那我們必須先獲取檔案列表中各個檔案的長度...
自己編寫的linux ls命令
include include include include include include include include include include int aflag 0 int lflag 0 typedef char datatype typedef struct node link...
more命令 less命令
more命令是乙個基於vi編輯器文字過濾器,它以全螢幕的方式按頁顯示文字檔案的內容,支援vi中的關鍵字定位操作。more名單中內建了若干快捷鍵,常用的有h 獲得幫助資訊 enter 向下翻滾一行 空格 向下滾動一屏 q 退出命令 該命令一次顯示一屏文字,滿屏後停下來,並且在螢幕的底部出現乙個提示資訊...