more命令淘汰的建筑材料为什么不从linux中淘汰

新手园地& & & 硬件问题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,按下回车就往下翻一行,按空格就往下翻一页
在论坛找了下 没找到关于这方面的
请问这个动作怎么编的?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章: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$&lte^?'^@^@~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 后加一个文件名参数时候,分屏显示,按空格换页,按回车换行&#039;,在左下角显示百分比;
可以处理管道参数的输入,处理选项+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):
&#039;&#039;&#039;
函数功能:本函数是屏幕变化信号的处理函数&#039;&#039;&#039;
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(&#039;hhhh&#039;, 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):
&#039;&#039;&#039;
函数功能:键盘中断信号的响应函数&#039;&#039;&#039;
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():
&#039;&#039;&#039;显示脚本的各参数的含义和调用格式&#039;&#039;&#039;
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():
&#039;&#039;&#039;用于系统退出 &#039;&#039;&#039;
os.system(&stty -F /dev/tty echo&) #恢复终端输出回车有效状态
os.system(&stty -F /dev/tty -cbreak&)#重新设着屏幕为输入字符回显状态
sys.exit()
def is_input():
&#039;&#039;&#039; 检测是否有管道数据输入 &#039;&#039;&#039;
f = sys.stdin.fileno()
#判断时候有管道输入
init_tty = termios.tcgetattr(f)
#当没有管道输入,也没有参数时候,显示提示
def get_line_num(args):
&#039;&#039;&#039; 从命令行参数中获取开始显示的指定行
参数:args:从命令行获取的参数返回值:要开始显示的指定行
&#039;&#039;&#039;
line_num = 1
for i in args:
#匹配要从第几行开始的行数
ln = re.search(r&#039;+d+&#039;, str(i))
line_num = int(ln.group().lstrip(&#039;+&#039;))#采用正则表达式处理去掉‘+’,得到开始显示的行号
return line_num
def get_patstr(args):
&#039;&#039;&#039;从命令行中获取要查找的字符串
参数:args:从命令行中获取的参数为返回值:要查找的字符串:
&#039;&#039;&#039;
patstr = &&
for i in args:
#获取要匹配的字符串
pa = re.search(r&#039;(+/w*[^s])&#039;, str(i))
patstr = str(pa.group().lstrip(&#039;+/&#039;))
return patstr
def get_args():
&#039;&#039;&#039;用于从命令行获取参数,解析各参数
返回值:(line_num,patstr,fp):要开始显示的指定行,要查找的字符串,要操作的文件对象 &#039;&#039;&#039;
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 &#039;+&#039; 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():
&#039;&#039;&#039; 用于获取文件显示终端的尺寸
&#039;&#039;&#039;
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):
&#039;&#039;&#039; 等待键盘输入命令 ,进行相应的处理。
:param pre_pg_len:屏幕改变以前保存的可显示的最大行数&#039;&#039;&#039;
sig_up, winsz_chg, page_len
ft = open(&#039;/dev/tty&#039;)
#打开标准终端输入
sys.stdout.flush()
#刷新缓存输出,否则显示会出现问题
c = &#039;&#039;
while True:
c = ft.read(1)#读取一个字符
except IOError:
if sig_up:
#键盘中断退出程序
if c == & &:
print &33[20D33[K& #控制光标回到more--反白字体的行首,删除此行以达到more不随文字滚动效果
if winsz_chg:
#如果此时屏幕大小变化,第一次返回之前屏幕满屏行数
winsz_chg = 0
return pre_pg_len
return page_len
#当输入是空格时候,分屏显示,显示下一屏
elif c == &q&:
print &33[20D33[K&
#当输入是&q&时,退出显示
elif c == &#039;n&#039;:
print &33[20D33[K&,
#当输入是换行符时候,多显示一行
def skip_ln(fp, line_num):
&#039;&#039;&#039; 读取文件到指定开始显示的行
&#039;&#039;&#039;
n = line_num - 1
fp.readline()
if not fp:
def search(fp, patstr):
&#039;&#039;&#039; 在文件中寻找要查找的字符串。
:param fp:要显示的文件对象
:param patstr:要查找的检索词
&#039;&#039;&#039;
text = &#039; &#039;
while True:
s = fp.read(1)
print &can not find the string in the file&
text = text + s
if patstr in text:
except IOError:
if sig_up:
def show_prog(read_size, total_size):
&#039;&#039;&#039;
在显示屏幕的左下角显示反显的&More&
当要显示的是一个文件时,同时显示已经显示文件的百分比
当显示的是一个管道输入时,只显示“More”
:param read_size: 已经显示的文件
:param total_size:要显示的文件的总大小
&#039;&#039;&#039;
if total_size:
prog = int(read_size * 100 / float(total_size))
&33[7m --More--& + str(prog) + &#039;%&#039; + &33[0m&, #输出反白的文字“more”和显示百分数
&33[7m --More--& + &33[0m&, #输出反白的文字“more”
def do_more(fp , line_num , patstr):
&#039;&#039;&#039;分屏显示文件内容
:param fp:要显示的文件对象
:param page_len: 可显示的最大行数
:param line_len:可每行可显示的最大字节数
&#039;&#039;&#039;
global page_len, line_len
read_size = 0
total_size = 0
os.system(&stty -F /dev/tty cbreak&) #调用linux命令设置屏幕为不等回车
os.system(&stty -F /dev/tty -echo &)#设置屏幕为输入字符不回显
if fp != sys.stdin:
fp.seek(0, 2)
#获取文件的总字节数,以便后来显示输出的百分比
total_size = fp.tell()
fp.seek(0, 0)
if line_num != 1:
skip_ln(fp, line_num)
if patstr:
search(fp, patstr)
line = fp.readline(line_len)#按行读取文件,可以设置最大读取字数,当遇到“n”时候,将&n&读入结束。
read_size = len(line)
num_lns = 0
while line:
if num_lns == page_len: #每次输出满屏后,等待指令
pre_pg_len = page_len
show_prog(read_size, total_size)
reply = show_more(pre_pg_len)
if reply == 0:
num_lns -= reply
print line.strip(&#039;n&#039;) #用,来消除print 输出的换行符
sys.stdout.flush()
#刷新缓存,否则会出现文件显示迟缓的问题
read_size = read_size + len(line)
num_lns += 1
line = fp.readline(line_len)
fp.close()
except IOError:
if sig_up:
if __name__ == &#039;__main__&#039;:
get_screen_size()
#获取显示终端的尺寸
(line_num, patstr, fp) = get_args()
do_more(fp, line_num, patstr)
转载请注明: &
与本文相关的文章java调不了Linux中的more命令吗_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:612,275贴子:
java调不了Linux中的more命令吗收藏
import java.io.BufferedRimport java.io.Fimport java.io.IOEimport java.io.InputSimport java.io.InputStreamRpublic class TeProcess {public static void main(String[] args) {
BufferedReader br =
Process p = Runtime.getRuntime().exec(“more test1.txt&);
p.waitFor();
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line =
while ((line = br.readLine()) != null) {
System.out.println(line);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
br.close();
} catch (Exception e) {
e.printStackTrace();
} }如果调用的是 grep &#39;.&#39; test1.txt 输出的内容就阔以打印出来,调用more test1.txt不可以
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或中国领先的IT技术网站
51CTO旗下网站
Linux more命令:逐页显示长文本文件
Linux中,配置文件和日志文件通常都采用文本格式,这些文件通常都有很长的内容,不能在一屏内全部显示。因而我们需要做分页处理,本文中分享了用more命令处理长文本文件的方法。
作者:zpl1025译来源:| 10:11
如果你已经习惯了在Linux系统上工作,那你一定会发现在Linux世界中存在着大量的文本文件。配置文件和日志文件通常都采用文本格式。这些文件通常都有很长的内容,不能在一屏内全部显示。所以在处理这种文件时,我们需要分页显示。这时我们可以用上more命令。
more是干嘛的
more是一个用来分页显示大文本文件的命令,它默认是内置在各个Linux发行版中的。
怎么用more
使用more命令,只需要键入:
$ more file_name
比如,我们想检查/var/log目录下的日志文件syslog,只需要键入:
$ more /var/log/syslog
然后我们可以看到在屏幕左下角有个提示,告诉我们当前的显示比例为0%。看上去这个文件相当大,所以第一页是全部页数的0%。使用空格键可以往下翻页,然后就可以看到提示的百分比会增加。
限制每页显示的行数
在执行more命令的时候,它会占用你终端窗口的全部空间用于显示。但是你可以通过参数-数字来限制每页显示的行数。
例如,你希望每页限制显示12行,可以通过下面的命令:
$ more -12 /var/log/syslog
现在,你会看到每页只显示12行,在按下空格键后,就会翻页显示后面的12行。
Display user message
我们知道,more命令会在显示区域的左下角提示当前内容所占的百分比。对于第一次使用more命令的人来说,他或她可能会想知道怎么才能往下翻页。为了避免这种情况,我们可以在执行时增加-d参数,这样就会额外显示一行用户信息&[按空格键继续,&q&推出.]&
如果用户按了&空格&或&q&之外的按键,more会显示一行帮助信息& [按&h&键查看提示。]&
如果按下h键,会显示一个帮助信息:
一个有意思的指令是b按钮,b按钮允许你退回到前面的页面。换句话说,b按钮可以允许向前翻页。
你可以通过左上角的...前1页信息来确认当前显示的是前面的页面。
通过参数-c,more命令不会滚动页面,而是直接清除之前的内容,替换为下一页的内容。 With&-c&option, more will not scroll the page. It will clear the previous page and put the next page or lines there.
$ more -10 -c lynis.log
如果按下空格键,下一页会仍然有相同的大小。
忽略多余的空白行
使用参数-s来忽略多余的空白行,下面是个例子:
当我们增加参数-s后:
$ more -s doc_30.txt
查找字符串
如果你的日志文件非常大,那么在其中查找你想要的字符串并不是那么容易。more命令的查找功能可以帮你,通过参数+/string可以用来搜索字符串,找到的关键字会显示在第一行。比如我们要在/var/logs/syslog文件中搜索&dhclient&,那more命令的格式:
$ more +/dhclient /var/log/syslog
然后,如果要在文件中继续搜索下一个,只需要按下/按钮,后面跟有关键字dhclient。
从指定行开始显示
你也可以通过参数+数字来指定开始显示的行,例如,我们有一个15行的文件:
然后我们想从第5行开始显示这个文件的内容,命令看起来会是这个样子:
$ more +5 doc_30.txt
可以显示二进制文件吗?
答案是不行. more命令会提示这样的信息,例如:
more是一个用来查看文本文件的基础工具,它不能用来显示二进制文件。通常,我们可以通过命令man more或者more --help来获取更多关于more怎么使用的信息。
译者:&校对:【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条外电头条外电
24H热文一周话题本月最赞
讲师:0人学习过
讲师:0人学习过
讲师:5人学习过
精选博文论坛热帖下载排行
这是一个最坏的年代,J2EE Web开发技术已经迟滞多年;这是一个最好的年代,J2EE Web开发技术的新变革留给勇于创新的人!
采用Apusic Opera...
订阅51CTO邮刊}

我要回帖

更多关于 linux more命令翻页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信