(考研英语)版本的man需要注意哪些问题?

1、查找帮助和搜索命令

学会自行搜索查找知识/解决办法是现今各种职业人士的基本技能,所以这种命令置于最上面,鼓励时常使用。

1.1man

就好象VC程序员须要才能熟练地查看MSDN一样,在linux/solaris下工作也应当在碰到命令使用问题时习惯性地使用man命令来查看帮助。会使用man指南后,你就不须要死记硬背命令的参数了,只需晓得命令大约支持什么功能,须要的时侯打开man指南搜索一下就可以了。

一开始看的时侯可能不习惯,但上面的内容排版都是很有规律的,风格一致性很强,只要坚持看多几次都会很熟悉了。

查看man指南时,按f(或空格)向后翻页,按b往前翻页,按q退出,按’/’可以输入字符串进行搜索。

样例1:#manpclose。查看pclose指南,会列举pclose的用途、函数原型、参数、返回值、错误码等详尽说明。

样例2:#man-fclose。Close有C函数的closelinux系统查看服务命令linux应用程序,有Tcl的外置命令close等,直接输入manclose时可能并不是你想要看的指南,比如是《TclBuilt-InCommands》的内容,而不是《LinuxProgrammer'sManual》的内容。这时就可以用man-fclose瞧瞧在什么指南里有close的帮助。

$man-fclose

close(2)-closeafiledescriptor

close(n)-Closeanopenchannel.

close(3p)-closeafiledescriptor

$man2close#中间的2就是前面括弧上面的2,表示man指南的section标记,假若不晓得2是哪些意思,直接试试看就晓得了。注意solaris版本的man须要在section后面加-s。

CLOSE(2)LinuxProgrammer'sManualCLOSE(2)

NAME

close-closeafiledescriptor

SYNOPSIS

#include

intclose(intfd);

……

$man3pclose

CLOSE(3P)POSIXProgrammer'sManualCLOSE(3P)

PROLOG

ThismanualpageispartofthePOSIXProgrammer'sManual.TheLinuximplemen?

tationofthisinterfacemaydiffer(consultthecorrespondingLinuxmanualpage

fordetailsofLinuxbehavior),ortheinterfacemaynotbeimplementedon

Linux.

NAME

close-closeafiledescriptor

SYNOPSIS

#include

intclose(intfildes);

样例3:#man2close。查看《LinuxProgrammer'sManual》中关于close函数的帮助。参见前面输出结果。

样例4:#catman-w。在man-fclose报如下错误时,是由于man指南的索引没有完善。可用这个命令构建man指南的索引。

-bash-3.00#man-fclose

/usr/share/man/windex:Nosuchfileordirectory

-bash-3.00#catman-w

-bash-3.00#man-fclose

closeclose(2)-closeafiledescriptor

closeclose(9e)-relinquishaccesstoadevice

1.2find*

查找命令。可以依照文件名或则文件构建的时间来查找它的绝对路径,默认是递归查找。

样例1:#find/opt/oracle-nametnsnames.ora。在/opt/oracle目录下递归查找tnsnames.ora文件。注意,-name旁边的文件/目录名若果不含键值,是会做完整匹配的,而不是模糊匹配。

样例2:#find/opt/oracle-name”alert*log”。在/opt/oracle目录下递归查找oracle数据库的日志文件。注意,这个文件名中含了转义,要加双冒号。若果不加双冒号会有哪些疗效呢?

答案是:倘若在当前目录(注意,不是/opt/oracle)下存在alert_a.log,这么执行的疗效相当于是find/opt/oracle-namealert_a.log;假如当前目录没有”alert*log”能匹配上的文件/目录名,则疗效和加了双冒号是一样的,”alert*log”会被原貌传给find。

这是由于bash在解析命令行时,首先会尝试将含转义(如*、?、[]等)的参数和当前目录下的文件/目录名匹配linux系统查看服务命令,假如才能匹配上,则会将参数替换成文件名,否则还是原貌参数不变。诸如还是”find/opt/oracle-namealert*log”命令,假如当前目录有alert_a.log和alert_b.log文件,最终执行的命令就相当于”find/opt/oracle-namealert_a.logalert_b.log”,也就是-name前面原先1个参数的变为了2个参数,find会报错说这不是一个合法的命令。这个shell类库的行为必需要了解,否则会遇到一些你解释不了的情况。旁边都会有类似的样例。

我们如何能晓得bash是如何做的呢?Linux下通过strace可以观察到,在solaris下可以通过truss来观察。在前面专门讲strace/truss的章节会提到。

样例3:find-L/opt/OMC-namesysd.xml。这儿多了一个-L参数,意思是假如递归查找是,假如遇见链接目录,会步入链接目录递归查找,否则默认是不步入的。在M2K环境,/opt/OMC/etc和/opt/OMC/var通常都是链接目录,倘若不晓得这个情况,才会错过这2个目录的查找。

样例4:find/opt/OMC/3rdTools/lib/opt/OMC/lib-nameliba.so。在/opt/OMC/3rdTools/lib和/opt/OMC/lib这两个目录下查找liba.so。

样例5:find/opt/OMC-userroot。查找/opt/OMC目录下属主为root的文件。查找属组则使用-group选项。

其它:

-atimen第N天访问过的文件

-atime+n前N天访问过的文件

-atime–n后N天访问过的文件

-sizen按文件的大小来查询,单位是BLOCK

1.3which

查找命令所在目录。在不晓得某个命令在那个目录,或系统中有多个相同的命令时,常常用which来确定使用的是哪一个目录下的命令。

样例:查找dbx在那个目录,便于拷贝到其它没有dbx的机器上使用。

#whichdbx

/opt/SUNWspro/prod/bin/dbx

1.4grep,egrep,zgrep,gzgrep*

在文件中查找指定的字符串。

样例1:查找imapsysd日志文件中派生进程时的日志,便于了解imapsysd在哪些时侯用哪些命令行启动进程。有些兄弟的用法是cat/opt/iMAP/var/logs/iMAP.imapsysd.trace|grepfork,疗效是一样的,但建议用本样例用法,尽管通常这些动作不频繁,不存在性能问题。

root@imap-xp156#grepfork/opt/iMAP/var/logs/iMAP.imapsysd.trace

T-IN:TagID0001:04-0800:36:22.265:(28377|59)ServiceAgentTask::#################forked:imapsvcd-namelic_agent-sysagent10.67.198.23-port31001-agentid9991-agenthandle0-threads0

T-IN:TagID0001:04-0800:36:22.273:(28377|58)ServiceAgentTask::#################forked:imapsvcd-namelog_agent-sysagent10.67.198.23-port31005-agentid46-agenthandle0-threads0

…………

样例2:查找sysd.xml文件中含start的行,并显示其上下相邻的行。仅适用于Linux。

#grep-1startsysd.xml

90

600

$(IMAP_ROOT)/platform/bin/kill_process

60

true

10

样例3:查找/opt/iMAP/etc目录下所有xml文件,并从中找出文件名含fm的文件。这和find/opt/iMAP/etc-name”*fm*.xml”是等效的,两种都可以用。管线后面的可以是任意有屏幕输出的命令,比如ls等。

#find/opt/iMAP/etc/-name”*.xml”|grepfm

/opt/iMAP/etc/conf/locale/zh_CN/fmexportsvc_field.xml

/opt/iMAP/etc/conf/locale/zh_CN/addfmsminfoStaticInfo.xml

…………

样例4:查找/opt/iMAP/etc目录下所有xml文件,并从中找出内容含fm的文件。

#find/opt/iMAP/etc/-name”*.xml”|xargsgrepfm

/opt/iMAP/etc/conf/locale/zh_CN/addfmsminfoStaticInfo.xml:

/opt/iMAP/etc/conf/locale/zh_CN/fm.xml:

…………

样例5:查找进程名中富含imapsvcd或imapsysd的进程。下边-e前面跟的是正则表达式,可以其它各类正则表达式。

#ps-ef|grep-e”imapsvcd|imapsysd”

以上的举例都是grep的反例。从下边linux环境上的输出可以看见egrep相当于样例5中的grep-e。-E是扩充正则表达式linux cp,比-e支持的正则表达式更丰富一些。Solaris上egrep其实不是脚本,但功能也是一样的。

#whichegrep

/usr/bin/egrep

#file/usr/bin/egrep

/usr/bin/egrep:symboliclinkto`/bin/egrep'

#file/bin/egrep

/bin/egrep:Bourneshellscripttext

#cat/bin/egrep

#!/bin/sh

exec/bin/grep-E${1+”$@”}

zgrep用于在压缩文件中查找字符串,它虽然也是一个脚本。zgrep支持搜索用compress和gzip压缩的文件。zgrep是linux下命令,solaris同等功能的命令是gzgrep。

#whichzgrep

/usr/bin/zgrep

#file/usr/bin/zgrep

/usr/bin/zgrep:Bourneshellscripttext

以上这种就基本够用了,再者还有fgrep/zfgrep/gzfgrep/gzegrep等,有空可查看man指南自行了解。

Tagged: greplinux查找文件linux系统文件目录