shell介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Shell介绍崔雪征cuixuezheng@hotmail.com简述Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。同Linux本身一样,Shell也有多种不同的版本。主要有下列版本的ShellBourneShell:Bourneshell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourneshell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。BASH:它是Bourneshell的扩展,简称bash。与Bourneshell完全向后兼容,并且在Bourneshell的基础上增加增强了很多特性,它还包含了很多Cshell和Kornshell中的优点,有灵活和强大的编程接口同时又有很友好的用户界面。CShell:Cshell是一种比Bourneshell更适于编程的shell,它的语法与C语言很相似。Linux为喜欢使用Cshell的人提供了Tcsh。Tcsh是Cshell的一个扩展版本。Tcsh包括命令行编辑可编程单词补全、拼写校正历史命令替换、作业控制和类似C语言的语法。它不仅和Bashshell是提示符兼容而且还提供比Bashshell更多的提示符参数。Kornshell集合了Cshell和Bourneshell的优点并且和Bourneshell完全兼容Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序ZShell:Thelastshellyou’lleverneed!Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。变量与表达式$#:保存程序命令行参数的数目$?:保存前一个命令的返回码$0:保存程序名$*:以($1$2...)的形式保存所有输入的命令行参数$@:以($1$2...)的形式保存所有输入的命令行参数-rfile:当file是一个可读文件时,返回True-wfile:当file是一个可写文件时,返回True-xfile:当file是一个可执行文件时,返回True-efile:当file存在时,返回True-ofile:当file文件的所有者是当前用户时,返回True-zfile:当file长度为0时,返回True-ffile:当file是一个普通文件时,返回True-dfile:当file是一个目录时,返回TrueExp1||exp2:当exp1和exp2的值至少一个为True时,返回TrueExp1&&exp2:当exp1和exp2的值同为True时,返回True!exp:当exp的值为False时,返回True正则表达式操作符用途.(句号)匹配任意单个字符。^(脱字号)匹配出现在行首或字符串开始位置的空字符串。$(美元符号)匹配出现在行末的空字符串。A匹配大写字母A。a匹配小写字母a。\d匹配任意一位数字。\D匹配任意单个非数字字符。\w匹配任意单个字母数字字符,同义词是[:alnum:]。[A-E]匹配任意大写的A、B、C、D或E。[^A-E]匹配除A、B、C、D和E之外的任意字符。X?匹配出现零次或一次的大写字母X。X*匹配零个或任意个大写X。X+匹配一个或多个字母X。X{n}精确匹配n个字母X。X{n,m}匹配最少n个并且不超过m个字母X。如果省略m,表达式将尝试匹配最少n个X。(abc|def)+匹配一连串的(最少一个)abc或def;abc和def将匹配。find和xargsfind是在系统中查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等等)选项-name按照文件名查找文件。-perm按照文件权限来查找文件。-prune使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用了-depth选项,那么-prune选项将被find命令忽略。-user按照文件属主来查找文件。-group按照文件所属的组来查找文件。-mtime-n+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。-newerfile1!file2查找更改时间比文件file1新但比文件file2旧的文件。-depth在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。xargs在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。选项•-0当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等•-p操作具有可交互性,每次执行comand都交互式提示用户选择•-Ixargs的每项名称,一般是一行一行赋值给{},可以用{}代替。-I必须指定替换字符-i是否指定替换字符-可选•-ddelim分隔符,argument的分隔符是空格•-r无参数时,停止xargs示例•find/-typef-print|xargsgrepdevice“•find./-name*.log|xargs-icp{}./a/grepgrep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。grep[选项]基本正则表达式[文件]常用的grep选项有:-c只输出匹配行的计数。-i不区分大小写(只适用于单字符)。-h查询多文件时不显示文件名。-l查询多文件时只输出包含匹配字符的文件名。-n显示匹配行及行号。-s不显示不存在或无匹配文本的错误信息。-v显示不包含匹配文本的所有行。-w完整匹配示例grep'Time'load_ml.loggrep-c'Time'load_ml.loggrep-v'Time'load_ml.loggrep'2014-10-[1-8]'load_ml.loggrep'^[^2014]'load_ml.loggrep'sql\{2,\}'load_ml.loggrep'^$'load_ml.logls-l|grep'^d‘ps-ef|greplocksedsed是一个非交互性文本流编辑器。sed[选项]sed命令输入文件。选项n不打印;sed不写编辑行到标准输出,缺省为打印所有行c下一命令是编辑命令。使用多项编辑时加入此选项f如果正在调用sed脚本文件,使用此选项i编辑当前文件使用sed在文件中定位文本的方式xx为一行号,如1x,y表示行号范围从x到y,如2,5表示从第2行到第5行/pattern/查询包含模式的行。例如/disk/或/[a-z]//pattern/pattern/查询包含两个模式的行。例如/disk/disks/pattern/,x在给定行号上查询包含模式的行。如/ribbon/,3x,/pattern/通过行号和模式查询匹配行。3./vdu/x,y!查询不包含指定行号x和y的行。1,2!sed常用编辑命令p打印匹配行d删除定位行s使用替换模式替换相应模式示例sed-n'1'pload_ml.logsed-n'/Time/'pload_ml.logsed-i's/424.58s/124.53s/g'load_ml.logawk如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务操作符=+=*=/=%=^=赋值操作符?条件表达操作符||&&!并、与、非~!~匹配操作符,包括匹配和不匹配===!=关系操作符+-*/%^算术操作符++--前缀和后缀内置变量ARGC命令行参数个数ARGV命令行参数排列ENVIRON支持队列中系统环境变量的使用FILENAMEawk浏览的文件名FNR浏览文件的记录数FS设置输入域分隔符,等价于命令行-F选项NF浏览记录的域个数NR已读的记录数OFS输出域分隔符ORS输出记录分隔符RS控制记录分隔符内置字符串函数•gsub(r,s)在整个$0中用s替代•rgsub(r,s,t)在整个t中用s替代r•index(s,t)返回s中字符串t的第一位置•length(s)返回s长度awk•match(s,r)测试s是否包含匹配r的字符串•split(s,a,fs)在fs上将s分成序列•asprint(fmt,exp)返回经fmt格式化后的•expsub(r,s)用$0中最左边最长的子串代替s•substr(s,p)返回字符串s中从p开始的后缀部分•substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分示例列出目录下的文件及总大小•ls-l|awk'/^[^d]/{print$9\t$5}{tot+=$5}END{printtot}'模糊匹配•awk-F|'{if($1~/s_gn_/)s+=$5}END{prints}'load_analyze_2014-12-07.log内置变量•awk-F/'{printNF,NR,$0}END{printFILENAME}'url.txt数字计算•awk-F|'{$5=$5/1024/1024;print$1\t$5}'load_analyze_2014-12-07.logSubstr•[hadoop@centos6log]$str=1234567•[hadoop@centos6log]$echo$str|awk'{printsubstr($str,1,5)}‘杀掉进程•ps-ef|grepdispatch_day.sh|awk'{print$2}'|xargskill-9其他命令sort对文本进行排序常用选项•-t域分隔符•-k域编号•-n按数字排序•-r倒序示例:•sort-t|-k5-n-rload_analyze_2014-12-07.loguniq用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。常用选项•-u只显示不重复行•-d只显示有重复数据行,每种重复行只显示其中一行•-c打印每一重复行出现次数。•-fn为数字,前n个域被忽略。示例•awk-F|'{print$1|$5}'load_analyze_2014-12-07.loga.log•uniq-ca.logjoin用来将来自两个分类文本文件的行连在一起。常用选项•-on.mn为文件号,m为域号。1.3表示只显示文件1第三域,每个n,m必须用逗号分隔,如1.3,2.1。•-jnmn为文件号,m为域号。使用其他域做连接域。•-t域分隔符。用来设置非空格或tab键的域分隔符示例•join-j11-j21-t|a.logb.log其他命令cut从标准输入或文本文件中剪切列或域选项•-clist指定剪切字符数。-c1,5-7剪切第1个字符,然后是第5到第7个字符。•-ffield指定剪切域数。-f1,10-12剪切第1域,第10域到第12域。•-d指定与空格和tab键不同的域分隔符示例•echoload_analyze_2014-12-07.log|cut-d_-f1|cut-c1-3split将大文件分割成小文件选项•-output_file-size行数,默认1000示例•s

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功