资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Linux shell,编程基础,Advanced Bash-Scripting Guide,LINUX,与,UNIX SHELL,编程指南,-CU,内容,Linux,基本命令,Shell,的语法结构,Linux shell,基本介绍,内容,Linux,基本命令,Shell,的语法结构,Linux shell,基本介绍,Shell,的位置,linux,系统组成,硬件系统,linux,内核,kernel,shell,程序,应用程序,Shell,的类别,Shell,类型,主要特点,简称,命令,提示符,Bourne Shell,最老、使用最广泛,每个,UNIX,都提供,是三种,Shell,程序的基础。,B Shell,sh,$,Korn Shell,是对,B Shell,的扩充,兼容,B Shell,。,K Shell,ksh,$,C-Shell,更接近于,C,语言,提供比,B Shell,更强大的功能,是三种,Shell,程序中功能最强大的。,C Shell,csh,%,Bash,:,Bourne-Again Shell,Shell,的发展与分类,Bsh,Ksh,Bash,Csh,Bsh,在,20,世纪,70,年代中期诞生于新泽西的,AT&T,贝尔实验室,具有较强的脚本编程功能,Csh,在,20,世纪,80,年代早期诞生于加利福尼亚大学,使用,C,语言的语法,用户命令交互更加方便,Ksh,结合了,Bsh,和,Csh,两者的功能优势,兼有,Bsh,的语法和,Csh,的交互特性,Bash,是,Bsh,的升级替代品,吸收了,Ksh,中的诸多优秀特性,,Bash,是开源软件,内容,Linux,基本命令,Shell,的语法结构,Linux shell,基本介绍,shell,基本命令,$clear,清除屏幕命令,shell,基本命令,$man ,系统帮助,shell,基本命令,echo:,回显,格式,:,echo OPTION.STRING.,echo,命令,oraclesrc$echo hello world!,hello world!,oraclesrc$a=my name is leeecho,oraclesrc$echo$a,my name is leeecho,oraclesrc$echo$ORACLE_SID,DBTEST,shell,基本命令,pwd:,显示当前目录,格式,:,pwd OPTION,pwd,命令,oraclesrc ftp$pwd,/home/oracle/ftp,oraclesrc ftp$cd/etc,oraclesrc etc$pwd,/etc,oraclesrc etc$,shell,基本命令,cd:,改变目录,格式,:,cd directoryname.,cd,命令,oraclesrc$pwd,/home/oracle,oraclesrc$cd.,oraclesrc home$pwd,/home,oraclesrc home$cd/,oraclesrc/$pwd,/,shell,基本命令,ls:,列表目录内容,格式,:,ls OPTION.FILE.,OPTION:,-l:,显示文件所有属性,-a:,显示所有文件含隐含文件,ls,命令,shell,基本命令,cat:,连接文件并显示文件内容,格式,:,cat OPTION FILE.,cat,命令,oraclesrc$cat mytest.txt,this is test!,shell,基本命令,wc,:,打印一个文件的字节数,字数和行数,格式,:,wc OPTION.FILE.,OPTION:,-l:,文件包含的行数,-w:,文件包含的单词数,-c:,文件包含的字符数,wc,命令,shell,基本命令,head,:,显示文件开始的部分,格式,:,head OPTION.FILE.,OPTION:,-n:,显示的行数,head,命令,默认显示前,10,行,shell,基本命令,tail,:,显示文件后面的部分,格式,:,tail OPTION.FILE.,OPTION:,-n:,显示的行数,tail,命令,默认显示后,10,行,shell,基本命令,mkdir,:,创建文件目录,格式,:,mkdir OPTION DIRECTORY.,mkdir,命令,oraclesrc leeecho$pwd,/home/oracle/leeecho,oraclesrc leeecho$mkdir test,oraclesrc leeecho$ls,test,shell,基本命令,rmdir,:,删除文件目录,格式,:,rmdir OPTION DIRECTORY.,rmdir,命令,文件夹必须为空才可以使用,rmdir,删除,shell,基本命令,rm,:,删除文件,格式,:,rmdir OPTION DIRECTORY.,OPTION:,-r,:删除文件夹以及所包含的文件,rm,命令,rm,是危险的,谨慎使用!,shell,基本命令,date,:,显示或设置日期,格式,:,date OPTION.+FORMAT,date,命令,取昨天的时间,echo date+%Y%m%d-d yesterday,取三天前的时间,echo date+%Y%m%d-d 3 days ago,echo date+%Y%m%d-d-3 days,取明天的时间,echo date+%Y%m%d-d tomorrow,echo date+%Y%m%d-d+1 days,shell,基本命令,find,:,查找文件,格式,:,find path.expression,find,命令,find/home/oracle/-name*.txt-print,shell,基本命令,xargs,:,执行命令,格式,:,xargs expression,xargs,命令,find/home/oracle/-name*.txt-print,|xargs cat,解决命令参数过多的问题,shell,基本命令,grep,:,搜索符合要求的内容,格式,:,grep options PATTERN FILE.,OPTION:,-v:,找出不匹配的行,-c:,统计匹配行数,-n:,显示匹配行及其行号,grep,命令,命令,显示,grep A-Z list,list,中包含一个大写字母的行,grep 0-9 data,data,中包含数据的行,grep A-Z0-9 list,list,中包含大写字母开始,数据结尾的,5,个字符组合的行,grep.pic$list,list,中以,.pic,结尾的行,shell,基本命令,crontab,:,执行作业,格式,:,crontab-u user-l|-r|-e,OPTION:,-l:,显示,cron,文件,-e:,创建、编辑,cron,文件,-r:,删除,cron,文件,crontab,命令,Crontab,文件格式:,minhourdatemonth day command,0-590-231-311-12 0-6,shell,基本命令,把两个命令连接起来,使前面命令的输出是后面一个命令的输入,这就是管道。,管道,(|),显示,oracle,的后台进程,ps-ef|grep$ORACLE_SID,实际例,gunzip-c E:2006062120060621*.gz|grep-i J.SMS E:20060621test7.txt,gunzip-c E:2006062120060621*.gz|grep-i J.SMS*E:20060621test7.txt,子,shell,基本命令,输入输出重定向,echo this is test1/home/oracle/leeecho/text1.txt,echo this is test3/home/oracle/leeecho/text1.txt,grep A-C,输出重定向,追加输出,|,管道操作,$ORACLE_SID,双引号,echo|;()$ORACLE_SID,单引号,(),忽略所有除自己之外的特殊字符,双引号,(“),不忽略一下三种特殊字符,美元符号,$,反引号,反斜杠,反斜杠,(),忽略后面跟着的一个特殊字符,shell,基本命令,有趣的例子:,oraclesrc leeecho$x=*,oraclesrc leeecho$echo$x,test1.txt test2.txt,oraclesrc leeecho$echo$x,*,oraclesrc leeecho$echo$x,$x,oraclesrc leeecho$echo$x,$x,shell,基本命令,命令替换,echo Yesterday is date+%Y%m%d-d yesterday!,echo Yesterday is$(date+%Y%m%d-d yesterday)!,反引号(,),$(),结构,Bash,的命令行编辑功能,操作键,功能,左右方向键,使用左右方向键可以使光标在当前命令行中的已有字符间进行任意的移动,退格键,删除命令行中光标左边的字符,Del,删除当前光标处的字符,Home,将光标快速移动到命令行的行首,End,将光标快速移动到命令行的行尾,Ctrl+u,删除当前光标到行首的内容,Ctrl+k,删除当前光标到行尾的内容,Bash,的命令行补全功能,命令补全功能,使用,Tab,键可在命令查找路径中查找匹配的命令,并进行命令拼写的补全,文件补全功能,使用,Tab,键可对文件和目录名进行补全,Bash,的命令历史与命令重复,命令历史功能的使用,使用上下方向键浏览已输入命令(历史命令),历史命令的查看,$history,用户命令历史保存文件,/.bash_history,命令历史的清除,$history-c,Bash,的命令别名功能,命令别名的显示,$alias,命令别名的定义,$alias,grep,=,grep,-i,命令别名的取消,$alias,grep,$,unalias,-a,系统别名定义文件,RHEL4,系统中为用户预定义的命令别名保存在“,/,etc,/,profile.d,/”,目录的配置文件中,管道与重定向,标准输入输出,重定向操作,管道操作,标准输入输出,输入输出文件,文件编号,默认设备,标准输入,0,键盘,标准输出,1,显示器,标准错误输出,2,显示器,重定向操作,类别,操作符,说明,输入重定向,将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上,将命令执行的结果重定向并追加到指定文件的末尾保存,错误重定向,2,清空指定文件的内容,并保存标准错误输出的内容到指定文件中,2,向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容,输出与错误组合重定向,&,将标准输出与错误输出的内容全部重定向到指定文件,内容,Linux,基本命令,Shell,的语法结构,Linux shell,基本介绍,知识准备,命令行编辑功能,命令和文件名补全功能,命令历史功能,命令别名功能,提供作业控制功能,具有将命令序列定义为功能键的功能,灵活的,Shell,脚本编程,Shell,变量的分类,环境变量,预定义变量,位置变量,用户自定义变量(本地变量),环境变量,使用,set,命令查看环境变量,set,常用环境变量,USER UID SHELL HOME PWD PATH PS1 PS2,环境变量配置文件,/,etc,/,bashrc,/,etc,/profile,/.,bash_profile,/.,bashrc,位置变量,$./exam01 one two tree four five six,$0,表示命令名称,$0,属于预定义变量,$0,不属于位置变量,$1,表示第,1,个命令参数,$2,表示第,2,个命令参数,$3,表示第,3,个命令参数,$n,表示第,n,个命令参数,预定义变量,变量名,含义,$#,表示位置参数的数量,$*,表示所有位置参数的内容,$?,表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在,Linux,中,命令退出状态为,0,表示命令正确执行,任何非,0,值表示命令执行错误,$,表示当前进程的进程号,$!,表示后台运行的最后一个进程号,$0,表示当前执行的进程名,用户自定义变量,自定义变量的设置,$DAY=sunday,自定义变量的查看与引用,$echo$DAY,自定义变量的输出,$export DAY,自定义变量的清除,$unset DAY,shell,语法结构,变量,Shell,的变量没有类型之说,只有在比较的时候有字符串和整数之说。,变量赋值,a=123,b=jkl,c=$(ls),使用变量,echo$a,let a=a+789,(,linux,做运算的方法),shell,语法结构,比较,整数的比较,-eq,:等于,-ne,:不等于,-gt,:大于,-ge,:大于等于,-lt,:小于,-le,:小于等于,字符串比较,=,等于则为真,!=,不相等则为真,-z,空串,-n,非空串,0,为真,,1,为假,shell,语法结构,oraclesrc$23-lt 89,oraclesrc$echo$?,0,oraclesrc$jkljl=jklljl,oraclesrc$echo$?,1,oraclesrc$-z jkl,oraclesrc$echo$?,1,oraclesrc$-z ,oraclesrc$echo$?,0,oraclesrc$,shell,语法结构,|,和,&,expr1|expr2 expr1,为假执行,expr2,expr1&expr2 expr1,为真执行,expr2,oraclesrc$str=,cuit,oraclesrc$-n$str&echo The string is null,The string is null,oraclesrc$-n$str&echo The string is not null,The string is not null,oraclesrc$str=,oraclesrc$-z$str|echo The string is null,oraclesrc$-n$str|echo The string is null,The string is null,shell,语法结构,if,语句,#!/bin/sh,#this is if test!,a=5,b=7,if$a-lt$b,then,echo$a$b,fi,if ,then,.,else,.,fi,shell,语法结构,while,语句,#/bin/sh,a=0,while$a-lt 10,do,echo$a,let a=$a+1,done,while ,do,.,.,done,shell,语法结构,for,语句,#/bin/,sh,for i in 1 2 3 4 5 6 7 8 9 10,do,echo-n$i,done,for i in,seq,10,do,echo-n$i,done,for,do,.,.,done,shell,语法结构,ftp,命令,ftp,命令,解释,?或,help command,命令帮助,binary,设定以二进制方式传送文件,ascii,设定以,ASCII,方式传送文件(缺省值),cd directory,改变远程目录,lcd directory,改变本地目录,put file1 file2,将本地,file1,文件拷贝到远程,file2,shell,语法结构,ftp,命令,ftp,命令,解释,get file1 fine2,将远程,file1,文件拷贝到本地,file2,mput files,将本地多个文件,files,拷贝到远程,mget files,将远程多个文件,files,拷贝到本地,close,关闭远程连接,quit,或,bye,退出,ftp,shell,语法结构,调用,sql,语句,sqlplus-s src/srcdbtest!,.,.,.,!,例子,linux,做运算,let c=1+5,expr b=6-2,(a=10+5),
展开阅读全文