Linux常用命令与Shell基本编程.ppt
Shell 脚本基本编程,无线产品部 katanazhang 2009-11-09,课程目标,linux 常用命令 shell 脚本编程 awk 的用法,(一)Linux 常用命令,系 统 文 件 网 络 其 他,top ps free vmstat iostat pstree lsof,ls cd pwd time export date kill/killall,alias ipcs ipcrm df du crontab ulimit,常用命令系统,ln cat head tail more less rename which whereis who,diff grep cut sort uniq wc join,mkdir mv rm cp locate find history,split chmod chown su tar gzip gunzip,正则表达式,常用命令文件,常用命令网络、其它,ssh ifconfig netstat sz/rz scp,ping tcpdump telnet rsync expect,cal clear bc man,(二)Shell 脚本编程,概 念 特 点 语 法 实 例,什么是Shell, Shell 是一个命令解释器 Shell 也是一种编程语言 解析语法 执行命令,什么是shell脚本,shell 是一种特殊的程序,它是用户与Linux系统内核之间的接口 它解释运行由命令行或文件输入的命令,从而实现用户与内核间的交互 当输入是文件形式时,这个含有待执行命令的文件就叫做脚本,Shell 脚本的用途,数据统计分析,进程实时监控,小程序的替身,Shell 脚本的特点,简单、快速,不需要 编译,灵活 高效,当要反复使用一个或连续一组命令时,可以用shell脚本很方便的将它们全部执行,添加和修改逻辑只需要简单的保存文件,不担心性能,1. 选择一种Shell bash bourne again shell 2. 找一个编辑器 vi/vim 3. 依据语法编写命令及规则文件 *.sh 4. 增加文件可执行权限或使用 sh 执行 ./*.sh sh x *.shShell 脚本的建立,注释 以开头的句子除外表示注释,直到这一行结束 变量 Shell变量都由字符串组成,不需要声明, 可以在程序的任意位置重新对变量赋值 赋值变量名值 访问变量名 或者 变量名,两端不能有空格,建议注释,Shell 脚本基本语法,系统预设变量 0 当前程序的执行名字 n 当前程序的第n个参数值,n19 * 当前程序的所有参数 当前程序的参数个数 当前程序的PID 执行上一个指令的PID 执行上一个指令的返回值,Shell 脚本基本语法,数值运算 bash 只提供了整数运算,一般通过let和expr这两个指令来实现 例如let“xx1” 或 xexpr x1 非整形运算可以通过bc来实现 xecho “scale2;x-y/x“|bc 在表达式中支持的操作符及其含义为 - * / 加,减,乘,除,取模 | 二元赋值操作,一种简写 ii1,Shell 脚本基本语法,流程控制,if expression then fi if expression then elif expression then else fi,for var in list do done while condition do done until condition do done break/continue,case var in condition1 condition2 conditionn * default stat esac,Shell 脚本基本语法,test 命令 if test expr; then fi,if expr ; then fi,Shell 脚本基本语法,Shell 脚本基本语法,定义 function func_name do operation on n 函数外的变量是全局的 local 可指定局部变量,引用 func_name param_list add RET21 add 101 237 ; echo RET,函数,Shell 脚本基本语法,(三)学习使用 Awk,语 法 实 例,基本语法 awk -F Ere -v Assignment -f ProgramFile|Program file 输入文件/命令行 模式匹配 1.正则表达式,开始使用 awk ,一个或多个前一个指定的字符,0个或一个前一个指定的字符,0个或多个前一个指定的字符,任意一个字符,或;前后两个字符串中的任意一个,m 个 r,至少 m 个 r,m到n个r,含m,n,abcde中任意一个字符,非abcde中任意一个字符,以abc开头,以abc结尾,2.关系表达式 匹配 不匹配 大于 大于等于 等于 不等于 3. 条件组合 Ere1,Ere2 指定范围Ere1到Ere2; 将复杂的条件组合在一起; ,, 布尔组合 4.BEGIN END 模式 BEGIN 在处理所有记录前执行,可用做初始化变量 END 在处理完所有记录后执行,可用做输出处理结果,开始使用awk ,开始使用awk ,变量赋值 name value 特殊变量 1 . n 输入记录的个字段值,0整个记录 FILENAME 当前输入文件的路径名称 FNR 当前文件中的当前输入记录的个数 FS 输入字段分隔符(单个字符或正则表达式) NF 当前记录中的字段个数 NR 当前输入记录的个数 RS 输入记录分隔符(缺省值是换行字符)。 OFS 输出字段分隔符(缺省值是空格)。 ORS 输出记录分隔符(缺省值是换行字符)。,算术运算 ,-,*,/,,,,-,*,/,, 流程控制 1 if Expression Statement else Action 2 while Expression Statement 3 for Expression ; Expression ; Expression Statement 4 break/continue 5 for Variable in Array Statement 6 if Variable in Array Statement ,开始使用awk ,7 delete Array Expression 8 delete/fdelete 9 exit 使用函数 function func_nameparam1,param2 调用RET func_nameparam1,param2 function average g,n for i in gsumsumgi avgsum/n return avg ,开始使用awk ,内建函数 1.数学函数 atan2y,x返回 y/x 的反正切。 cosx返回 x 的余弦;x 是弧度。 sinx返回 x 的正弦;x 是弧度。 expx返回 x 幂函数。 logx返回 x 的自然对数。 2.字符串函数 subEre, Repl, In 替换第一个In中与Ere匹配的字符串 gsubEre, Repl, In替换所有In中与Ere匹配的字符串 indexString1, String2查询子字符串 length String 返回字符串长度 substrString, M, N 返回M开始长度为N的子字符串,开始使用awk ,match String, Ere split String, A, Ere 将 String 分割为数组元素 An tolower String 转换为小写字符串 toupperString 转换为大写字符串 sprintfat, Expr, Expr, . . . 格式转换,用法同 c 3.时间函数 mktimedatespec输入“YYYY MM DD HH MM SS”,输出秒 strftimeat,timestamp输入秒,返回格式字符串systime 返回当前时间 eg. awk print strftime“b-a“,mktime2005 05 13 00 00 00,开始使用awk 输出 print ExpressionList Redirection Expression ExpressionList待输出的字符串,由变量和常量字符串组成 Redirection| 输出到文件或做为其他命令的输入 ExpressionRedirection的目的地址,文件名或其他命令 printf at ,ExpressionList RedirectionExpression printf 语句将 ExpressionList 参数指定的表达式以 at 参数 指定的格式写至标准输出,at同c语言(除了c) c当变量为数字,则输出该数字的字符编码 c当变量为字符串,则输出该字符串的第一个字符,开始使用awk ,谢谢大家,无线产品部 coonzhang rtx9240 分机7235,正则表达式( regular expression), Back,一个正则表达式,就是用某种模式去匹配一类字符串的一个公式,