《LinuxShell编程基础》由会员分享,可在线阅读,更多相关《LinuxShell编程基础(58页珍藏版)》请在金锄头文库上搜索。
1、Linux shell编程基础Advanced Bash-Scripting GuideLINUX与UNIX SHELL编程指南 -CU内容内容Linux基本命令基本命令Shell的语法结构的语法结构Linux shell基本介绍基本介绍内容内容Linux基本命令基本命令Shell的语法结构的语法结构Linux shell基本介绍基本介绍Shell的位置linuxlinux系统组成系统组成系统组成系统组成硬件系统硬件系统linux内核内核kernelshell程序程序应用程序应用程序 Shell的类别Shell类型类型主要特点主要特点简称简称命令命令提示符提示符Bourne Shell最老、使
2、用最广泛,每个最老、使用最广泛,每个UNIX都提供,是三种都提供,是三种Shell程序的基程序的基础。础。B Shellsh$Korn Shell是对是对B Shell的扩充,兼容的扩充,兼容B Shell。K Shellksh$C-Shell更接近于更接近于C语言,提供比语言,提供比B Shell更强大的功能,是三种更强大的功能,是三种Shell程序中功能最强大的。程序中功能最强大的。C Shellcsh%Bash:Bourne-Again Shell Shell的发展与分类BshBshKshKshBashBashCshCshBsh在在20世世纪70年代中期年代中期诞生于新生于新泽西的西的A
3、T&T贝尔实验室,具有室,具有较强的脚本的脚本编程程功能功能Csh在在20世世纪80年代早期年代早期诞生于加利福尼生于加利福尼亚大学大学 ,使用,使用C语言的言的语法,用法,用户命令交命令交互更加方便互更加方便Ksh结合了合了Bsh和和Csh两者的功能两者的功能优势,兼有兼有Bsh的的语法和法和Csh的交互特性的交互特性 Bash是是Bsh的升的升级替代品,吸收了替代品,吸收了Ksh中中的的诸多多优秀特性,秀特性,Bash是开源是开源软件件内容内容Linux基本命令基本命令Shell的语法结构的语法结构Linux shell基本介绍基本介绍 shell基本命令$ clear清除屏幕命令清除屏幕
4、命令 shell基本命令$ man 系统帮助系统帮助 shell基本命令echo:回显回显格式格式:echo OPTION.STRING. echo命令命令oraclesrc $ echo hello world!hello world!oraclesrc $ a=my name is leeechooraclesrc $ echo $amy name is leeechooraclesrc $ echo $ORACLE_SIDDBTEST shell基本命令pwd:显示当前目录显示当前目录格式格式:pwd OPTION pwd命令命令oraclesrc ftp$ pwd/home/oracl
5、e/ftporaclesrc ftp$ cd /etcoraclesrc etc$ pwd/etcoraclesrc etc$ shell基本命令cd:改变目录改变目录格式格式:cd directoryname. cd命令命令oraclesrc $ pwd/home/oracleoraclesrc $ cd .oraclesrc home$ pwd/homeoraclesrc home$ cd /oraclesrc /$ pwd/ shell基本命令ls:列表目录内容列表目录内容格式格式:ls OPTION. FILE.OPTION:-l:显示文件所有属性显示文件所有属性-a:显示所有文件含隐
6、含文件显示所有文件含隐含文件 ls命令命令 shell基本命令cat:连接文件并显示文件内容连接文件并显示文件内容格式格式: cat OPTION FILE. cat命令命令oraclesrc $ cat mytest.txtthis is test! shell基本命令wc:打印一个文件的字节数,字数和行数打印一个文件的字节数,字数和行数格式格式: wc OPTION. FILE.OPTION:-l :文件包含的行数文件包含的行数-w:文件包含的单词数文件包含的单词数-c:文件包含的字符数文件包含的字符数 wc命令命令 shell基本命令head:显示文件开始的部分显示文件开始的部分格式格式
7、: 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/leeechooraclesrc leeecho$ mkdir testoraclesrc l
8、eeecho$ lstest shell基本命令rmdir:删除文件目录删除文件目录格式格式: rmdir OPTION DIRECTORY.rmdir命令命令 文件夹必须为空才可以使用rmdir删除 shell基本命令rm:删除文件删除文件格式格式: rmdir OPTION DIRECTORY.OPTION:-r:删除文件夹以及所包含的文件:删除文件夹以及所包含的文件rm命令命令 rm是危险的,谨慎使用! shell基本命令date:显示或设置日期显示或设置日期格式格式: date OPTION. +FORMATdate命令命令 取昨天的时间echo date +%Y%m%d -d yes
9、terday取三天前的时间echo date +%Y%m%d -d 3 days agoecho date +%Y%m%d -d -3 days取明天的时间echo date +%Y%m%d -d tomorrowecho 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/or
10、acle/ -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$ l
11、ist list中以.pic结尾的行 shell基本命令crontab:执行作业执行作业格式格式: crontab -u user -l | -r | -eOPTION:-l:显示cron文件-e:创建、编辑cron文件-r:删除cron文件 crontab命令命令Crontab文件格式:文件格式:minhourdatemonth day command0-590-231-311-12 0-6 shell基本命令把两个命令连接起来,使前面命令的输出是后把两个命令连接起来,使前面命令的输出是后面一个命令的输入,这就是管道。面一个命令的输入,这就是管道。 管道管道(|)显示显示oracle的后台进
12、程的后台进程 ps -ef | grep $ORACLE_SID实际例实际例gunzip -c E:2006062120060621*.gz | grep -i J.SMS E:20060621test7.txtgunzip -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
13、 grep A-C 输出重定向输出重定向追加输出追加输出|管道操作管道操作输入重定向输入重定向 shell基本命令 引用引用单引号忽略所有的特殊字符,单引号自己除外,变量不解释单引号忽略所有的特殊字符,单引号自己除外,变量不解释 echo |;()$ORACLE_SID双引号双引号 echo |;()$ORACLE_SID 单引号单引号() 忽略所有除自己之外的特殊字符忽略所有除自己之外的特殊字符双引号双引号(“) 不忽略一下三种特殊字符不忽略一下三种特殊字符 美元符号 $ 反引号 反斜杠 反斜杠反斜杠() 忽略后面跟着的一个特殊字符忽略后面跟着的一个特殊字符 shell基本命令有趣的例子:有
14、趣的例子:oraclesrc leeecho$ x=*oraclesrc leeecho$ echo $xtest1.txt test2.txtoraclesrc leeecho$ echo $x*oraclesrc leeecho$ echo $x$xoraclesrc leeecho$ echo $x$x shell基本命令 命令替换命令替换echo Yesterday is date +%Y%m%d -d yesterday!echo Yesterday is $(date +%Y%m%d -d yesterday)! 反引号(反引号()$()结构结构Bash的命令行编辑功能操作键操作键
15、功能功能左右方向左右方向键 使用左右方向键可以使光标在当前命令行中使用左右方向键可以使光标在当前命令行中的已有字符间进行任意的移动的已有字符间进行任意的移动 退格退格键删除命令行中光标左边的字符删除命令行中光标左边的字符Del删除当前光标处的字符删除当前光标处的字符 Home将光标快速移动到命令行的行首将光标快速移动到命令行的行首End将光标快速移动到命令行的行尾将光标快速移动到命令行的行尾Ctrl + u删除当前光标到行首的内容删除当前光标到行首的内容 Ctrl + k删除当前光标到行尾的内容删除当前光标到行尾的内容 Bash的命令行补全功能命令补全功能使用Tab键可在命令查找路径中查找匹配
16、的命令,并进行命令拼写的补全文件补全功能使用Tab键可对文件和目录名进行补全Bash的命令历史与命令重复命令历史功能的使用使用上下方向键浏览已输入命令(历史命令)历史命令的查看$ history用户命令历史保存文件/.bash_history命令历史的清除$ history -c Bash的命令别名功能命令别名的显示$ alias命令别名的定义$ alias grep=grep -i命令别名的取消$ alias grep$ unalias -a系统别名定义文件RHEL4系统中为用户预定义的命令别名保存在“/etc/profile.d/”目录的配置文件中管道与重定向标准输入输出重定向操作管道操作
17、标准输入输出输入输出文件输入输出文件文件编号文件编号默认设备默认设备标准输入标准输入0键盘键盘标准输出标准输出1显示器显示器标准错误输出标准错误输出2显示器显示器重定向操作类别类别操作符操作符说明说明输入重定向输入重定向将命令的执行结果重定向输出到指定的文件中,命将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上令进行输出重定向后执行结果将不显示在屏幕上 将命令执行的结果重定向并追加到指定文件的末尾将命令执行的结果重定向并追加到指定文件的末尾保存保存 错误重定向错误重定向2清空指定文件的内容,并保存标准错误输出的内容清空指定文件的内容,并保存标准错误输出的内
18、容到指定文件中到指定文件中2向指定文件中追加命令的错误输出,而不覆盖文件向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容中的原有内容 输出与错误输出与错误组合重定向组合重定向&将标准输出与错误输出的内容全部重定向到指定文将标准输出与错误输出的内容全部重定向到指定文件件内容内容Linux基本命令基本命令Shell的语法结构的语法结构Linux shell基本介绍基本介绍知识准备知识准备命令行编辑功能命令和文件名补全功能命令历史功能命令别名功能提供作业控制功能具有将命令序列定义为功能键的功能灵活的Shell脚本编程Shell变量的分类环境变量预定义变量位置变量用户自定义变量(本地变量)环境
19、变量使用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个命令参数个命令参数预定义变量变量名变量名含义含义$# 表示
20、位置参数的数量表示位置参数的数量 $*表示所有位置参数的内容表示所有位置参数的内容 $?表示命令表示命令执行后返回的状行后返回的状态,用于,用于检查上一个命上一个命令的令的执行是否正确;在行是否正确;在Linux中,命令退出状中,命令退出状态为0表示命令正确表示命令正确执行,任何非行,任何非0值表示命令表示命令执行行错误 $表示当前进程的进程号表示当前进程的进程号 $!表示后台运行的最后一个进程号表示后台运行的最后一个进程号 $0表示当前执行的进程名表示当前执行的进程名 用户自定义变量自定义变量的设置$ DAY=sunday自定义变量的查看与引用$ echo $DAY 自定义变量的输出$ ex
21、port 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:小于等于:小于等于字符串比较字符串比较 = 等于则为真等于则为真
22、!= 不相等则为真不相等则为真 -z 空串空串 -n 非空串非空串 0 为真,为真,1 为假为假 shell语法结构oraclesrc $ 23 -lt 89 oraclesrc $ echo $?0oraclesrc $ jkljl = jklljl oraclesrc $ echo $?1oraclesrc $ -z jkl oraclesrc $ echo $?1oraclesrc $ -z oraclesrc $ echo $?0oraclesrc $ shell语法结构 | 和和 & expr1 | expr2 expr1为假执行为假执行expr2 expr1 & expr2 exp
23、r1为真执行为真执行expr2 oraclesrc $ str=cuitoraclesrc $ -n $str & echo The string is nullThe string is nulloraclesrc $ -n $str & echo The string is not nullThe string is not nulloraclesrc $ str=oraclesrc $ -z $str | echo The string is null oraclesrc $ -n $str | echo The string is nullThe string is null shel
24、l语法结构 if语句语句#!/bin/sh#this is if test!a=5b=7if $a -lt $b then echo $a $bfi if then . else . fi shell语法结构 while语句语句#/bin/sha=0while $a -lt 10 do echo $a let a=$a+1done while do . . done shell语法结构 for语句语句#/bin/shfor i in 1 2 3 4 5 6 7 8 9 10doecho -n $idonefor i in seq 10doecho -n $idone for do . . do
25、ne shell语法结构 ftp命令命令ftp命令命令解释解释?或?或help command命令帮助命令帮助binary设定以二进制方式传送文件设定以二进制方式传送文件ascii设定以设定以ASCII方式传送文件(缺方式传送文件(缺省值)省值)cd directory改变远程目录改变远程目录lcd directory改变本地目录改变本地目录put file1 file2将本地将本地file1文件拷贝到远程文件拷贝到远程file2 shell语法结构 ftp命令命令ftp命令命令解释解释get file1 fine2将远程将远程file1文件拷贝到本文件拷贝到本地地file2mput 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)58以上有不当之处,请大家给与批评指以上有不当之处,请大家给与批评指正,谢谢大家!正,谢谢大家!