新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 33, 距离下一级还需 167 积分
论坛徽章:0
有时候我们全屏看不完整一个文件时,可以在查看时加个more,按下回车就往下翻一行,按空格就往下翻一页
在论坛找了下 没找到关于这方面的
请问这个动作怎么编的?
& |& & |& & |& & |& 
论坛徽章:0
直接看源代码不就好了吗?
稍有积蓄, 积分 321, 距离下一级还需 179 积分
论坛徽章:0
LS的办法简炼
白手起家, 积分 11, 距离下一级还需 189 积分
论坛徽章:0
..........................--!
[ 本帖最后由 miaobevin 于
23:03 编辑 ]
白手起家, 积分 33, 距离下一级还需 167 积分
论坛徽章:0
原帖由 < 于
20:15 发表
直接看源代码不就好了吗?
我vi了一下 里面全是符号 看不懂
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@ ~Q^D^H4^@^@^@^Po^@^@^@^@^@^@4^@ ^@^F^@(^@^X^@^W^@^F^@^@^@4^@^@^@4~@^
^@^@^@^@^@^@^@^@^@^@^@^Q^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^@^@^@^@^@^@^@^@^S^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^O^@^@^@^U^@
^@^@~Ly^D^H^G^K^@^@~Py^D^H^G^L^@^@~Ty^D^H^G^M^@^@~Xy^D^H^G^N^@^@~\y^D^H^G^O^@^@| y^D^H^G^P^@^@ y^D^H^G^Q^@^@ y^D^H
C^E,u^D^H^A^@^@^@~CAoh[s^D^HeYuyy~IA~CA^P~EE^O~D ^@^@^@~CAo~K^FPQeP^F^@^@~CA^Pe~[^@^@^@~K^U~H ^E^H~MB^DP~H ^E^H~KB
C^EDy^D^H^A^@^@^@~C= !^E^H^@u%~C=Dy^D^H^@t^O!Tu^D^HHe^O~M &^@^@^@^@!Tu^D^H~CAtP !^E^H! !^E^H~ID$$!u!^E^H~Co^A~^DyD
~P~Mt&^@e^[A^@^@~C|$^X^@t'~CAuj^A!tt^D^HP~MD$<e^?'^@^@~CA^P~C=Dy^D^H^@t#yL$$e^]~C|$^\^@t^V~CAo!tt^D^HP~KT$ Re#B^@
C^E^L'^E^Hyyy^?~IO[^~CAtA~P~Ci^TVS~Kt$ ~CAuj^@j^@Ve oyy~CA^P~EAt^G1AeI^@^@^@Vj^Aj^B~M\$^ZSe]oyy~CA^P~Co^A^O~E!^@^@
e~Ddyy~CA^P~C=@u^D^H^@u^^~CAoh | ^D^Hj^CeYiyy~CAoj^Ah &^E^He iyyy^EUy^D^He ^@^@^@~C=~@ ^E^H^@^O~E&^@^@^@~C=Hu^D^H^
&%t9&0tNe &st^Ye ~M ^@^@^@^@~CC^D~CAo~KGuPe!8^@^@e^O~CC^D~CAo~KGuPeP8^@^@^AA~CA^Pe~I~CAo!`t^D^HPj%eeiyyF~CA^Pepyyy
^O~Ef^A^@^@~CAoWy^Eay^D^HeG^A^@^@~P~H^SC~Cu& &&&^O~E~T^@^@^@~C=^L&^E^H^@tM;5A&^E^H}v~C=^P&^E^H^@um~K^U^X&^E^H~EOt2
u^FKeC^@^@^@~CAoWPy^M^X ^E^HeIeyy1o~CA^PeH~M &^@^@^@^@~Cu^Lu^\~C=4u^D^H^@t^SACy^A^CLC~CA^By^EUy^D^He ~Cuyu^N~Ae|
^O~Egtyyy^Eay^D^H!Xu^D^H9A|^Q~EA~^M~C=\u^D^H^@u^DA^C
C1A;5Xu^D^Hu^O~C=0u^D^H^@^O~UA%y^@^@^@PEt^D^H~EAt^V~C=^H&^E^H^@t^M~C=\u^D^H^@t^DA^C
C~IO-|&&^E^H~IE^@A^C^@~Id[^_]~CA^LA~P~M &^@^@^@^@~Ci^XS~C=A&^E^H^@^O~D~Q^@^@^@~C=^P&^E^H^@t^V~CAo!`t^D^HPj
e6eyy~CA^Pei~P~CAo!`t^D^HPj^Me eyy~CA^P~C=^\ ^E^H^@u$!^X&^E^H~EAt^[~CAuh^@~O^D^Hj^APeeeyy~CA^Pe.~M ^@^@^@^@~K^]A&^
&^Hu^M~@~^C_u^GFe/^A^@^@~P1y~Cu^A~^[~JF^A~@u_u^D&^Ht
&^Hu^K~@~^B_u^E?^A^@^@^@~Eyt^Z~HT$^_~@u_u^G~JF^B~HD$^_~CAt~CA^Ce^G~Io~HT$^_F~Mky9It\~@|$^_ u/~Eyu/~C= !^E^H^@t&~Cy
&^Hu^M~@~^B_u^G?^A^@^@^@e&~Eyt
!Ay^D^He^H~Mv^@!~L ^E^H~CAuh^@~O^D^Hj^APe[cyy~CA^P~@|$^_ u^V~C=`u^D^H^@t^M~Eyu&&~C= !^E^H^@u^W^O T$^_~CAo!`t^D^HPR
eyy~J^C~CA^PC~DAua~CAuh^@~O^D^Hj^A!^T ^E^HPeUayy~CA^P~I=`u^D^H~Ie~EU^O~M^tyy[^_]~CA^\A~Ci|UWVSCD$(^@^@^@^@CD$$^@^@
e9ayy~CA^Pen~Mt&^@~CAo!`t^D^HPj^Me ayy~CA^P~C=^\ ^E^H^@u$!^X&^E^H~EAt^[~CAuh^@~O^D^Hj^APeeayy~CA^Pe0~M ^@^@^@^@~Kl
a^D^Hj^@e+ayyPIt^D^H!lt^D^H~CA^PPDt^D^H!It^D^HeC~Io~CAo~C=Ot^D^H^@t^M!lt^D^H9^EOt^D^Ht#~CAuj^Eh^[a^D^Hj^@eaayyPOt^
^@^@~Eou^K~K5 !^E^Hei^B^@^@~@|$/z^O~Ea^B^@^@~I5 !^E^HeO^B^@^@~Eot^F~I5,u^D^H~K^U,u^D^H~IT$(yD$$e~L
^@^@e^W.^@^@~C=^H ^E^H^@t.~CAo!`t^D^HPj^Me ayy~CA^PeA*^@^@~CAo!`t^D^HPe ayye3~M ^@^@^@^@~C=A&^E^H^@~^We2uyy~CAo!`t
e^Kayy~CA^Pen~M ^@^@^@^@~CAo!`t^D^HPj^Medayy~CA^P~C=^\ ^E^H^@u$!^X&^E^H~EAt^[~CAuh^@~O^D^Hj^APe&ayy~CA^Pe.~M ^@^@^
uUy^Eay^D^HN~Eo^?*~K^U !^E^He ^B^@^@~Mv^@~Eo^O~E$yyy ^A^@^@^@~It$(yD$$eA^G^@^@~M ^@^@^@^@~C=^@&^E^H^@^O~EP^G^@^@!^
e^B*yy~CA^Pee~CAo!`t^D^HPj^MeiOyy~CA^P~C=^\ ^E^H^@u!!^X&^E^H~EAt^X~CAuh^@~O^D^Hj^APe Oyy~CA^Pe+~Mv^@~K^]A&^E^H~EU~
^@^@1Aep^A^@^@~C=^@&^E^H^@^O~EQ^A^@^@~CAo!`t^D^HPj^MeaOyy~CA^P~C=A&^E^H^@^O~D~S^@^@^@~C=^P&^E^H^@t^X~CAo!`t^D^HPj
e8Oyy~CA^Pek~Mv^@~CAo!`t^D^HPj^Me Oyy~CA^P~C=^\ ^E^H^@u$!^X&^E^H~EAt^[~CAuh^@~O^D^Hj^APeeOyy~CA^Pe.~M ^@^@^@^@~K^]
e Dyy~CA^Peg~CoyuJ~CAo~C=4y^D^H^@t^M!lt^D^H9^E8y^D^Ht#~CAuj^EhLe^D^Hj^@e IyyP4y^D^H!lt^D^H~CA^PP8y^D^H!4y^D^HPeI^S
^@^@^@~CA^P re^D^He^T~M ^@^@^@^@~CAoj^EeOIyy~CA^PKe~MEyy~EA}^D~EU^?a~EA^O~EY^@^@^@~CAoj^@eOIyy~CA^P~EAu^\~CAoj^@e2
C^E &^E^H^@^@^@^@~C=\y^D^H^@t^M!lt^D^H9^E`y^D^Ht#~CAuj^EhCe^D^Hj^@e^@EyyP\y^D^H!lt^D^H~CA^PP`y^D^H~K^]\y^D^H?ps^D^
C^EXu^D^HP^@^@^@!~H ^E^H %e^D^H~K^H~IE~IE~Ca^Ct^Vz^O~Co^Bt^E8&t+B8&t&B8&t!B~K^B~DAt^Z~Dat^Uc^@^@y^@t^M~CA^Dc^@^@^@
~J^CCB8Atoe^Fy^EDy^D^H~CAoh*e^D^HeoAyy~CA^P~CAoh-e^D^HP\u^D^HeaAyy~CA^P~CAohdu^D^Hh4e^D^HP^H'^E^He9Cyy~CA^P~CAohdu
C^E$ ^E^H^@^@^@^@~CAohZe^D^HeCAyy~CA^P~EAu^T~CAoh]e^D^He/Ayy~CA^P~EAt
C^E&u^D^H^@^@^@^@~CAohdu^D^Hh`e^D^He|Ayy~CA^PP^T ^E^H~EAu
C^E^T ^E^H=s^D^H~CAohdu^D^Hhce^D^HeTAyy~CA^PPAy^D^H~EAt^^~CAohdu^D^Hhke^D^He6Ayy~CA^PP~L ^E^H~EAuJ!^T ^E^H~@8^@u@!
C^EAy^D^H~We^D^H~CAoh~Ye^D^HeYAyyPOy^D^H~CA^P~EAu
C^EOy^D^H~_e^D^H~CAohA!^E^H~CAo!tt^D^HPeYAyy~CA^PPeOAyy~CAohA!^E^HP^@&^E^H~CAo!dt^D^HPe Ayy~CA^PP~IierAyyu ^O^@^@^
^@^@~CAo!`t^D^HPe:Ayye+~C=A&^E^H^@~^UeEOyy~CAo!`t^D^HPe^\Ayye^M~CAohos^D^He=^N^@^@~CA^P~CAoj^@e@Ayy| O!^E^H~HD$^O1
~CAo!pu^D^He^H~CAo!lu^D^HPe~N^M^@^@~CA^PN~J^F&^_w^D&
u^H&^?^O~Eb^B^@^@y^MA&^E^H~C=Lu^D^H^@t^Y~CAo!pu^D^HPe[^M^@^@e=^B^@^@~M ^@^@^@^@~CAo!lu^D^HPeB^M^@^@e$^B^@^@~C=^X&^
^@^@~CA^P~CAo!`t^D^HPj
e Ayy~CA^P~CAo!`t^D^HP~KD$$Pe~]Ayy~CA^Ped^@^@^@~P~Mt&^@~CAo!`t^D^HPj^Me~@Ayy~CA^P~CAo!`t^D^HP~KD$$PejAyy~CA^P~K^U^
e7Ayy~CA^PeA~Io~C=^\ ^E^H^@u^W~CAuh^@~O^D^Hj^ARe^GAyy~CA^Pe!~Io~MXy~EU~^X~CAo!`t^D^HPj euAyy~CA^PK~EU^?eC^EA&^E^H^
t^E~Cu^[u^E~Cu^?u&~MC@~Cu^?u^E ?^@^@^@~IA~CAo!tu^D^HPeC^K^@^@y^EA&^E^H~CA^P~Cu
t/~Cu^[t*~H\$^_~CAo~MD$+Pe~O^K^@^@y^EA&^E^H~CA^P~Id+D$0;D$4^O~L^ZyyyNA^F^@~C=^X&^E^H^@u^F~I-A&^E^H~KD$4+t$0H9A|J~C
~DEt^\~Dit^W/A^@^@y^@t^N~CA^D/A^@^@^@yua~Ce^CBB& #^E^H)A~IO~IU~Ca^Ct^Vz^O~Cu^Bt^E8(t-@8(t(@8(t#@~K^H~DEt^\~Dit^W/A
~P~Mt&^@ekNyy~IO~IU~Ca^Ct^Vz^O~Cu^Bt^E80t-@80t(@80t#@~K^P~DOt^\~Dot^W/A^@^@y^@t^N~CA^D/A^@^@^@yua~Ce^C@@)O^A^EA&^E
ea yy~CA^PPek yy~CA^P~CAo!`t^D^HPe: yy~CAoj^@j^Ve^^ yy~CA ~CAoj^@j^Te^O yy~CAo~M~\$ ^@^@^@Sei yy~CA ~CAoj^TSe! yy~
t^X~Cuyt^N~IO-|&&^E^H=t^@^@^@~N~Cu
u^Fy^Eay^D^HA^C^@[^~CA^TA~M ^@^@^@^@~M '^@^@^@^@~Ci^XS~K\$ e^X~M ^@^@^@^@~CAo!`t^D^HPRe1 yy~CA^P~CAoSe~U yy~IA~CA^
uaKy^Eay^D^H~EU^?T[^~CA^TA~Ci^XS~K\$ ~C=A&^E^H^@^O~D~M^@^@^@~C=^P&^E^H^@t^U~CAo!`t^D^HPj
ec yy~CA^Pee~EUu^S~CAo!`t^D^HPj^Me~I yy~CA^P~C=^\ ^E^H^@u^^!^X&^E^H~EAt^U~CAuh^@~O^D^Hj^APeT yy~CA^Pe'!A&^E^H)O~IA
t^E~@u^[u^E~@u^?u'^O A~@u^?u^D^DAe^B^D@~HA~CAo!tu^D^HPe^V^B^@^@y^EA&^E^H~CA^P~H\$^O~CAo~MD$^[Pel^B^@^@~CA^Py^EA&^E
eO yy~CA^PPe_ yy~CA^P~CA^LA~P~M &^@^@^@^@~Ci^T| O!^E^HVS1U~Kt$ c y^D^Hefnyy~IA~H^U y^D^H^O E!pt^D^HoDH^A^Ht^O~M^D~
C^E,u^D^H^A^@^@^@~MBt~C=Dy^D^H^@t^C~MByP !^E^Hf~KA^Bf~EAt^K1Af~KA^BPXu^D^H~CAoh| U^D^Hj^\e~ yy~CA^P[~CA^XA~M ^@^@^
^@^@/usr/share/locale^@util-linux^@MORE^@::::::::::::::^@
^@::::::::::::::
^@: unknown option &-^@&
^@P~[^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~P~Z^D^H~
*** %s: directory ***
^@r^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
******** %s: Not a text file ********
^@[Use q or Q to quit]^@--More--^@(Next file: %s)^@(%d%%)^@^@^@[Press space to continue, 'q' to quit.]^@^G^@...bac
***Back***
^D^H&&^D^H&&^D^H&&^D^H&&^D^H&&^D^H&&^D^H&&^D^H&&^D^H&&^D^H&&^D^H^P ^D^H&&^D^H&&^D^H^F ^D^H&&^D^Hu ^D^H&&^D^H&&^D^H
@^@^@^@^@^@^@^@^@No previous command to substitute for^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
~N^D^H^V~N^D^H&~N^D^H6~N^D^HF~N^D^HV~N^D^Hf~N^D^Hv~N^D^H~F~N^D^H~V~N^D^H|~N^D^H ~N^D^HA~N^D^HO~N^D^Ha~N^D^Ho~N^D^H
@^D^@^@^@^H^@^@^@n^@^@^@^A^@^@^@^F^@^@^@ ~M^D^H ^M^@^@1^@^@^@^@^@^@^@^@^@^@^@^D^@^@^@^@^@^@^@i^@^@^@^A^@^@^@^F^@^@
^@^@~X^@^@^@^D^@^@^@^@^@^@^@^B^@^@^@^B^@^@^@D^@^@^@tyyo^B^@^@^@d~K^D^Hd^K^@^@0^@^@^@^E^@^@^@^A^@^@^@^D^@^@^@^@^@^@^@^@^D^@^@^@^@^@^@^@i^@^@^@^A^@^@^@^F^@^@
^@^@~X^@^@^@^D^@^@^@^@^@^@^@^B^@^@^@^B^@^@^@D^@^@^@tyyo^B^@^@^@d~K^D^Hd^K^@^@0^@^@^@^E^@^@^@^A^@^@^@^D^@^@^@^@^@^@
白手起家, 积分 28, 距离下一级还需 172 积分
论坛徽章:0
是啊,怎么能够看到(找到)源码呢?
论坛徽章:0
原帖由 qing4a926 于
09:12 发表
我vi了一下 里面全是符号 看不懂
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@ ~Q^D^H4^@^@^@^Po^@^@^@^@^@^@4^@ ^@^F^@(^@^X^@^W^@^F^@^@^@4^@^@^@4~@^
^@^@^@^@^@^@^@^@^@^@^@^Q^@^@^@^@^@^@^@^@^@^@^ ...
楼主连二进制文件和文本文件都不会区分么?
送你一份less的源码。less比more更好使。
家境小康, 积分 1114, 距离下一级还需 886 积分
论坛徽章:1
strace more filename你的位置: >
> Python 实现 linux下more命令
并把上面脚本加到环境变量里
chmod 755 more.py
ln -n more.py /usr/bin/more1
调用 more1 即可
cat /var/log/dmesg | more1
#!/usr/bin/env python
# -*- coding:utf-8-*-
#名字:more.py
实现linux中more的基本功能,当more 后加一个文件名参数时候,分屏显示,按空格换页,按回车换行',在左下角显示百分比;
可以处理管道参数的输入,处理选项+num:从指定行开始显示,+/string :查找字符串,从指定字符串之后开始显示
#运行环境:
安装有PYTHON的linux系统
#调用示例:
more.py [+num ]
[+/pattern]
command|./more.py [+num ] [+/pattern]
输出帮助信息
num 是 要从第几行开始显示,pattern是要在文件中查找的字符串
import sys
import curses
#用于获取终端的尺寸
#用于字符匹配
import signal
#用于处理ctrl+c中断
import fcntl
# 处理显示过程中屏幕的变化
import termios
#获取终端信息
import struct
page_len = 0
#满屏时可以显示的最大行数
line_len = 0
#满屏时每行可以显示的最大字节数
sig_up = 0
#中断信号标志
winsz_chg = 0
#窗口大小改变标志
def win_sz_chg(signum, frame):
'''
函数功能:本函数是屏幕变化信号的处理函数'''
global page_len, line_len, winsz_chg
winsz_chg = 1
signal.signal(signal.SIGWINCH, signal.SIG_IGN)
s = struct.pack(&HHHH&, 0, 0, 0, 0)
a = struct.unpack('hhhh', fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ , s))
#获取当前窗口的大小
page_len = int(a[0]) - 1
#留一行显示进度
line_len = int(a[1])
signal.signal(signal.SIGWINCH, win_sz_chg) #不调用会导致只能检测一次屏幕变化
signal.signal(signal.SIGWINCH, win_sz_chg)
#接收处理窗口改变信号
def term_do_exit(signum, frame):
'''
函数功能:键盘中断信号的响应函数'''
global sig_up
sig_up = 1
#将键盘中断标志置1
os.system(&stty -F /dev/tty echo&) #恢复终端输出回车有效状态
os.system(&stty -F /dev/tty -cbreak&)#重新设着屏幕为输入字符回显状态
signal.signal(signal.SIGINT, term_do_exit)
#接收并处理键盘中断信号
def usage():
'''显示脚本的各参数的含义和调用格式'''
print &-----------------usage-----------------&
print &1./more.py [+num] [+/pattern] filename&
print &2 command | ./more.py&
print &num: Start at line number num. &
print &pattern:Start at line number num.&
print &space: next page&
print &q :do_exit the program&
print &enter:next line&
print&----------------------------------------&
sys.exit()
def do_exit():
'''用于系统退出 '''
os.system(&stty -F /dev/tty echo&) #恢复终端输出回车有效状态
os.system(&stty -F /dev/tty -cbreak&)#重新设着屏幕为输入字符回显状态
sys.exit()
def is_input():
''' 检测是否有管道数据输入 '''
f = sys.stdin.fileno()
#判断时候有管道输入
init_tty = termios.tcgetattr(f)
#当没有管道输入,也没有参数时候,显示提示
def get_line_num(args):
''' 从命令行参数中获取开始显示的指定行
参数:args:从命令行获取的参数返回值:要开始显示的指定行
'''
line_num = 1
for i in args:
#匹配要从第几行开始的行数
ln = re.search(r'+d+', str(i))
line_num = int(ln.group().lstrip('+'))#采用正则表达式处理去掉‘+’,得到开始显示的行号
return line_num
def get_patstr(args):
'''从命令行中获取要查找的字符串
参数:args:从命令行中获取的参数为返回值:要查找的字符串:
'''
patstr = &&
for i in args:
#获取要匹配的字符串
pa = re.search(r'(+/w*[^s])', str(i))
patstr = str(pa.group().lstrip('+/'))
return patstr
def get_args():
'''用于从命令行获取参数,解析各参数
返回值:(line_num,patstr,fp):要开始显示的指定行,要查找的字符串,要操作的文件对象 '''
line_num = 1
patstr = &&
args = sys.argv[1:]
if not args:
if is_input():
#在没有参数时候,判断是否为管道命令输入,不是提示正确输入参数
fp = sys.stdin
return (line_num, patstr, fp)
if args[-1] == &--help&:
line_num = get_line_num(args)
patstr = get_patstr(args)
if '+' not in args[-1]:
filename = args[-1]
if not os.path.exists(filename):
print & 没有那个文件或目录&
fp = open(filename)
if not is_input():
fp = sys.stdin
return (line_num, patstr, fp)
def get_screen_size():
''' 用于获取文件显示终端的尺寸
'''
global page_len, line_len
screen = curses.initscr()
page_len, line_len = screen.getmaxyx()#获取屏幕显示尺寸
page_len = page_len - 2
#去掉输入命令那行,和最后要显示more的那一行
curses.endwin()
#此处不结束会导致后面显示的乱码
def show_more(pre_pg_len):
''' 等待键盘输入命令 ,进行相应的处理。
:param pre_pg_len:屏幕改变以前保存的可显示的最大行数'''
sig_up, winsz_chg, page_len
ft = open('/dev/tty')
#打开标准终端输入
sys.stdout.flush()
#刷新缓存输出,否则显示会出现问题
c = ''
while True:
c = ft.read(1)#读取一个字符
except IOError:
if sig_up:
#键盘中断退出程序
if c == & &:
print &