Linux more命令的簡單實現

2021-07-10 20:34:05 字數 1352 閱讀 9922

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程式設計實踐》第一章

linux more命令的使用

1 命令格式 more dlfpcsu num pattern linenum file 2 命令功能 more命令和cat的功能一樣都是檢視檔案裡的內容,但有所不同的是more可以按頁來檢視檔案的內容,還支援直接跳轉行等功能。3 命令引數 n 從笫n行開始顯示 n 定義螢幕大小為n行 patter...

linux more命令的使用

linux more命令的使用 more命令,功能類似 cat cat命令是整個檔案的內容從上到下顯示在螢幕上。more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵 space 就往下一頁顯示,按 b 鍵就會往回 back 一頁顯示,而且還有搜尋字串的功能 more命令從前向後讀...

linux more命令詳解

格式 more 選項 檔案 或者 more dlfpcsu num pattern linenum filenames.引數 p 顯示下一屏之前先清屏。c 作用同 p基本一樣。不同的是先顯示內容再清除其他舊資料 d 在每屏的底部顯示更友好的提示資訊 more xx press space to co...