Linux培训文档.doc_第1页
Linux培训文档.doc_第2页
Linux培训文档.doc_第3页
Linux培训文档.doc_第4页
Linux培训文档.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件事业三部 项目实施部北京联银通科技有限公司Shell编程培训文档初稿软件事业三部 项目实施部作为公司内部员工培训文档。主要内容包括Linux基本命令的介绍,shell编程,以及shell与oracle数据库的交互。版本记录版本编号版本日期修改者说明文件名V1.02012-12-13傅作魁初版Shell编程培训文档目录一、Linux的目录结构41.1Linux目录结构的简单介绍41.2Linux的文件类型4二、Linux基础命令的使用42.1注销,关机,重启42.2文件与目录的操作42.3打包、压缩与解压缩62.4在后台运行程序72.5任务调度命令82.6删除调度工作任务82.7其他常用命令8三、Shell编程93.1编写/修改权限及执行Shell程序93.2在Shell程序中使用的参数103.3在Shell程序中的使用变量103.4表达式的比较113.5循环结构语句133.6条件结构语句143.7在Shell脚本中使用函数163.8在Shell脚本中调用其他脚本16四、Shell与oracle数据库的交互174.1shell向库表中新增数据174.2shell删除库表中的数据174.3shell修改库表中的数据184.4shell查询库表中的数据19一、 Linux的目录结构1.1Linux目录结构的简单介绍/:linux文件系统的最顶端是/,称为linux的root,所有的目录、文件、设备都在/之下。/home:普通用户目录默认存放目录。/lib:库文件存放目录。/usr:这个是系统存放程序的目录,比如命令、帮助文件等。/bin:存放系统所需要的那些命令,比如ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的、普通用户可以使用的命令。/boot:这是 Linux的内核及引导系统程序所需要的文件目录。/dev:设备文件存储目录,比如声卡、磁盘。/etc:系统配置文件的所在,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件。/tmp:临时文件目录,有时用户运行程序的时候,会产生临时文件。/var:这个目录的内容是经常变动的,/var下有/var/log这是用来存放系统日志的目录。/var/lib用来存放一些库文件,比如MySQL的。 /media:本目录是空的,是用于挂载的。 /srv:一些服务需要访问的文件存放在这。 /sys:系统的核心文件。1.2Linux的文件类型linux有四种基本文件系统类型:普通文件、目录文件、链接文件和特殊文件。可以用file命令来识别。1.2.1普通文件如文本文件、c语言源代码、shell脚本等,可以用cat、less、more、vi等来察看内容,用mv来改名。 1.2.2目录文件包括文件名、子目录名及其指针。可以用ls列出目录文件。 1.2.3链接文件是指向一索引节点的那些目录条目,用ls来查看时,链接文件的标志用l开头,而文件后以-指向所链接的文件。 1.2.4特殊文件如磁盘、终端、打印机等都在文件系统中表示出来,常放在/etc目录内。例如:软驱A称为/dev/fd0,/dev/had来自第一硬盘。二、 Linux基础命令的使用2.1注销,关机,重启2.1.1注销系统的logout命令Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可:rootlocalhost root#logoutRed Hat Linuxrelease 9(Shike)Kernel 2.4.20.8 on an i686Login: 2.1.2关机或重新启动的shutdown命令Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。参数说明如下:立即关机:-h 参数让系统立即关机。范例如下:rootlocalhost root#shutdown h now指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下:rootlocalhost root#shutdown +5 5分钟后关机rootlocalhost root#shutdown 10:30 在10:30时关机关机后自动重启:-r参数设置关机后重新启动。范例如下:rootlocalhost root#shutdown -r now 立刻关闭系统并重启rootlocalhost root#shutdown -r 23:59 指定在23:59时重启动2.1.3重新启动计算机的reboot命令顾名思义,reboot命令是用来重新启动系统的。虽然reboot命令有参数可以使用,但是一般只需要单独运行reboot命令就可以了。rootlocalhost root#reboot2.2文件与目录的操作2.2.1列出文件列表的ls命令ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例如下:显示当前目录的内容:tonyfree tony$ ls当运行ls命令时,并不会显示名称以“.”开头的文件。因此可加上“-a”参数指定要列出这些文件。范例如下:tonyfree tony$ ls a“-l”参数用于以列表的形式,显示文件的详细信息。范例如下:tonyfree tony$ ls -l以“-s”参数显示每个文件所有的空间,并以“-S”参数指定按所有占用空间的大小排序。范例如下:tonyfree tony$ ls s S在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下:tonyfree tony$ ls /usr/games2.2.2切换目录的cd命令cd(change directory)命令可让用户切当前所在的目录。范例如下:tonyfree home$ cd tony 切换到当前目录下的tony子目录tonyfree tony$ cd . 切换到上一层目录tonyfree home$ cd / 切换到系统根目录tonyfree /$ cd 切换到用户主目录tonyfree tony$ cd /usr/bin 切换到/usr/bin目录2.2.3创建目录的mkdir命令mkdir(make directory)命令可用来创建子目录。tonyfree tony$ mkdir tool 在所在目录下创建tool子目录2.2.4删除目录的rmdir命令rmdir(remove directory)命令可用来删除“空”的子目录。范例如下:tonyfree tony$ rmdir tool 删除tool目录2.2.5复制文件的cp命令cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令将一个文件复制成另一个文件或复制到某个目录时,需要指定原始文件名与目的文件名或目录。范例如下:tonyfree tony$ cp data1.txt data2.txt 将data1.txt复制成data2.txttonyfree tony$ cp data3.txt /tmp/data 将data3复制到/tmp/data目录中显示复制过程:加入-v参数可显示命令执行过程。范例如下:tonyfree tony$ cp zip.txt zip2.txt 一般状态下不会显示复制过程tonyfree tony$ cp v zip.txt zip3.txt 以-v显示复制过程递归复制:加入“-R”参数可同时复制目录下的所有文件及子目录。范例如下:tonyfree tony$cp v R * backup 将所有文件(含子目录文件)复制到backup目录2.2.6删除文件或目录的rm命令rm(remove)命令可以删除文件或目录。范例如下:tonyfree tony$ rm myfile 删除指定的文件tonyfree tony$ rm * 删除当前目录中的所有文件rm命令的常用参数如下:强迫删除:使用-f参数时,rm命令会直接删除文件,不再询问。范例如下:tonyfree tony$ rm f *.txt 强迫删除文件递归删除:-r 也是一个相当常用的参数,使用此参数可同时删除指定目录下的所有文件及子目录。范例如下:tonyfree tony$ rm r data 删除data目录(含data目录下所有文件和子目录)tonyfree tony$ rm r * 删除所有文件(含当前目录所有文件,所有子目录和子目录下的文件)强制删除指定目录:当使用-r参数删除目录时,若该目录下有许多子目录及文件,则系统会不间断地询问,以确认您的确要删除目录或文件。若已确定要删除所存目录及文件,则可以使用-rf参数,如此一来,系统将直接删除该目录中所有的文件及子目录,不再询问。范例如下:tonyfree tony$ rm rf tmp 强制删除tmp目录及该目录下所有文件及子目录显示删除过程:使用-v 参数。范例如下:tonyfree tony$ rm v2.2.7让显示画面暂停的more命令为了避免画面显示瞬间就闪过去,用户可以使用more命令,让画面在显示满一页时暂停,此时可按空格键继续显示下一个画面,或按Q键停止显示。当使用ls命令查看文件列表时,若文件太多则可以配合more命令使用。范例如下:tonyfree bin$ ls a l more -a后的|是管道(竖线)单独使用more命令时,可用来显示文字文件的内容。范例如下:tonyfree tony$ more data.txt2.2.8连接文件的cat命令cat(concatenate) 命令可以显示文件的内容(经常和more命令搭配使用),或是将数个文件合并成一个文件。范例如下:tonyfree tony$ cat preface.txt | more 逐页显示 preface.txt的内容tonyfree tony$ cat preface.txt outline.txt 将preface.txt 附加到outline.txt文件之后tonyfree tony$ cat new.txt info.txt readme.txt 将new.txt和info.txt合并成readme.txt文件2.2.9移动或更换文件,目录名称的mv命令mv (move)命令可以将文件及目录移动到另一个目录下面,或更换文件及目录的名称。范例如下:tonyfree backup$ mv a.txt . 将a.txt文件移到上层目录tonyfree backup$ mv z1.txt z3.txt 将 z1.txt改名成z3.txttonyfree backup$ cd . 切换到上一层目录tonyfree tony$ mv backup . backup 目录上移一层2.2.10显示当前所在目录的pwd命令pwd(print working directory)命令可显示用户当前所在的目录。范例如下:tonyfree tony$ pwd2.2.11搜索字符串得grep命令grep 命令可以搜索特定字符串并显示出来,一般用来过滤先前得结果,避免显示太多不必要得信息。范例如下:tonyfree etc$ grep text *.conf 搜索当前目录中扩展名为.conf且包含“text”字符串得文件若使用一般权限的用户运行,上例的输出结果会包含很多如“权限不够”之类的错误信息,可使用-s参数消除:tonyfree etc$ grep s text *.conf2.2.12重导与管道重导(redirect)可将某命令的结果输出到文件中,它有两种命令:“”和“”。“”可将结果输出到文件中,该文件原有的内容会被删除;“”则将结果附加到文件中,原文件内容不会被清除。范例如下:tonyfree tony$ ls adir.txt 将ls a命令执行结果输出到dir.txt文件tonyfree tony$ cat data1.txt data2.txt 将 data1.txt 内容附加到data2.txt文件之后通道(pipe)命令的符号是“|”,可将某命令的结果输出给另一命令,以下范例将ls命令的输出结果传给grep命令过滤:tonyfree etc$ ls | gerp conf 搜索并显示ls命令运行结果中包含有“conf”字符串再举一个删除文件或目录的例子,可以利用yes命令重复输出“y”字符的特性,将结果传给rm命令,如此即可避免重复输入“y”:tonyfree tony$ yes | rm r mydir2.3打包、压缩与解压缩2.3.1打包文件的tar命令tar命令位于/bin目录中,它能将用户所指定的文件或目录打包成一个文件,不过它并不做压缩。一般Unix上常用的压缩方式是先用tar命令将许多文件打包成一个文件,再以gzip等压缩命令压缩文件。tar命令参数繁多,以下举例常用参数作说明:-c:创建一个新的tar文件;-v:显示运作过程信息;-f:指定文件名称;-z:调用gzip压缩命令执行压缩;-j:调用bzip2压缩命令执行压缩;-t:参看压缩文件内容;-x:解开tar文件。tonyfree data# tar cvf data.tar * 将目录下所有文件打包成data.tartonyfree data# tar zcvf data.tar.gz * 将目录所有文件打包成data.tar再用gzip命令压缩tonyfree data# tar tvf data.tar * 查看data.tar文件中包括了哪些文件tonyfree data# tar xvf data.tar * 将data.tar解开2.3.2压缩与解压缩tar命令本身没有压缩能力,但是可以在产生的tar文件后,立即使用其他压缩命令来压缩,省去需要输入两次命令的麻烦。使用-z参数来解开最常见的.tar.gz文件:tonyfree data# tar zxvf foo.tar.gz 将文件解开至当前目录下使用-j参数解开tar.bz2压缩文件tonyfree data# tar jxvf linux-2.4.20tar.bz2 将文件解开至当前目录下使用-Z参数指定以compress命令压缩tonyfree data# tar cZvf picture.tar.Z *.tif 将该目录下所有.tif打包并命令压缩成.tar.Z文件2.4在后台运行程序用户有时的程序有可能要花费很多时间,如果将它放在前台运行,将导致无法继续做其他事情,最好的方法就是将它放在后台运行,甚至可能希望在用户注销系统后,程序还可以继续运行。2.4.1在后台运行程序的&、bg命令将程序放到后台运行的最简单方法就是在命令最后加上“&”,范例如下:tonyfree root# updatedb & 在后台执行 locate 数据库更新命令tonyfree root# bg 将更新操作放到后台运行2.4.2前台运行的程序fg命令如果用户当前已有程序在后台运行,可以输入fg命令,将它从背景中移到前台运行:tonyfree root# fg 放到前台执行的命令会显示出来2.4.3在退出后让程序继续运行的nohup命令此命令可使用户退出系统后,程序继续运行。范例如下:tonyfree rony$ nohup myserver &然后用户就可以退出了,当再次登录的时候,可以用ps aux命令看到程序仍在后台中运行。2.5任务调度命令计算机有很多程序需要周期性的被运用,对于重复性的工作,不需要每次都手动运行这些程序。可利用任务调度命令,指定系统定期在某个时间运行这些程序,轻松完成想要执行的工作。一般用户可利用crontab命令,自行设置要定期执行的工作。每个用户可执行crontab e命令,编辑自己的任务调度设置文件,并在此文件加入要定期执行的工作。以下范例为tony用户编辑的任务调度设置文件:tonyfree rony$ crontab e执行上述命令后,即会进入VI文本编辑器自行编辑任务调度的工作。编辑内容的格式如下:Minute Hour Day Month DayOfWeek Command例如:30 22 1 * * /count/test.sh 在每月1号的22点30分自动执行/count/test.sh脚本2.6删除调度工作任务如果不想再定期执行任务调动中的工作,则可执行crontab r命令删除所有任务调度的工作。范例如下:tonyfree rony$ crontab r 删除任务调度中的工作tonyfree rony$ crontab -1 再查看一次任务调度中的工作no crontab for tony 已经没有任何任务调度工作2.7其他常用命令Linux可用的命令相当多,在工作中会接触到更多的其他命令。2.7.1修改密码的passwd命令passwd(password)命令可让用户变更密码。范例如下:tonyfree tony$ passwdChanging password for user tonyChanging password for tony (current)UNIX password: 输入原密码New password: 输入新密码Retype new password 在此输入新密码passwd: all authentication tokens updated successfully 密码修改成功2.7.2显示与设置时间的date、clock命令date 命令可以显示当前日期时间。范例如下:tonyfree rony$ dateclock命令也可以显示出系统当前的日期与时间,不过clock命令默认不允许一般用户执行,请用root账号执行:rootfree root# clock如果系统时间不正确要想更改,可以使用date命令来设置时间。用root账号如下操作:rootfree root# date 09091200 将时间设定为9月9日12点00分centos alias:只需当前用户使用:vim /.bashrc所有用户使用:vim /etc/bashrc添加内容:alias test1=ssh 192.168.1.1修改完毕后需要执行以下代码方可生效:source /.bashrcorsource /etc/bashrc三、 Shell编程3.1编写/修改权限及执行Shell程序3.1.1编辑Shell程序使用vi编辑器编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。rootlocalhost bin#vi date#! /bin/shecho “Mr.$USER,Today is:”echo &date “+%B%d%A”echo “Wish you a lucky day !”3.1.2赋予可执行权限编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令:rootlocalhost bin#chmod +x date3.1.3执行Shell程序rootlocalhost bin#./ dateMr.root,Today is:二月 06 星期二Wish you a lucky day !3.2在Shell程序中使用的参数3.2.1位置参数由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1。Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。3.2.2内部参数上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无,最常用的内部变量有$0、$#、$?、$*,它们的含义如下。$0:命令含命令所在的路径。$#:传递给程序的总的参数数目。$?:Shell程序在Shell中退出的情况,正常退出返回0,反之为非0值。$*:传递给程序的所有参数组成的字符串。3.3在Shell程序中的使用变量3.3.1变量的赋值在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,其格式如下:变量名=值 等号(=)前后没有空格3.3.2访问变量值如果要访问变量值,可以在变量前面加一个美元符号“$”,例如:rootlocalhost bin#a=”How are you ”rootlocalhost bin#echo “He juest said:$a”A is:hello world一个变量给另一个变量赋值可以写成:变量2=$变量1例如:x=$ii+可以写成:i=$i+13.3.3键盘读入变量值在Shell程序设计中,变量的值可以作为字符串从键盘读入,其格式为:read 变量例如:rootlocalhost bin#vi test3#! /bin/shecho “please input name of directory”read DIRECTORYcd $DIRECTORYls l3.4表达式的比较3.4.1字符串比较作用:测试字符串是否相等、长度是否为零,字符串是否为NULL。常用的字符串操作符如表3-1所示表3-1 常用的字符串操作符字符串操作符 含义及返回值=比较两个字符串是否相同,相同则为“真”!=比较两个字符串是否不相同,不同则为“真” -n比较两个字符串长度是否大于零,若大于零则为“真” -z比较两个字符串长度是否等于零,若等于零则为“真”例如:rootlocalhost bin#vi test5 #! /bin/Bashread ar1read ar2 “$ar1” = “$ar2” echo $? #?保存前一个命令的返回码注意:”后面和”前面及等号“=“的前后都应有一个空格3.4.2数字比较在Bash Shell编程中的关系运算有别于其他编程语言,用表3-2中的运算符用test语句表示大小的比较。表3-2 用test比较的运算符运算符号含 义-eq 相等 -ge 大于等于 -le 小于等于 -ne 不等于 -gt 大于 -lt 小于例如:rootlocalhost bin#vi test7 #! /bin/Bashread x,yif test $x eq $y then echo “$x=$y”else echo “$x!=$y”fi执行结果:rootlocalhost bin#./ test750 10050!=100rootlocalhost bin#./ test7150 150150=1503.4.3逻辑操作在Shell程序设计中的逻辑运算符如表3-3所示。表3-3 Shell中的逻辑运算符运算符号含 义 !反:与一个逻辑值相反的逻辑值 -a与(and):两个逻辑值为“是”返回值为“是”,反之为“否” -o或(or): 两个逻辑值有一个为“是”,返回值就是“是”例如:rootlocalhost bin#vi test8#! /bin/Bashpart1 =”1111”part2 =” ” #part2为空 “$ part1” a “$ part2”echo $? #保存前一个命令的返回码 “$ part1” o “$ part2”echo $?3.4.4文件操作文件测试操作表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于文件的操作符有很多,在表3-4中只列举一些常用的操作符。表3-4 文件测试操作符 运算符号含 义-d对象存在且为目录返回值为“是”-f对象存在且为文件返回值为“是”-L对象存在且为符号连接返回值为“是”-r对象存在且可读则返回值为“是”-s对象存在且长度非零则返回值为“是”-w对象存在且且可写则返回值为“是”-x对象存在且且可执行则返回值为“是”例如:rootlocalhost bin#vi test9#! /bin/Bash -d /root/zb echo $? #保存前一个命令的返回码3.5循环结构语句3.5.1 for循环语法:for 变量 in 列表 do 操作 done列表是在for循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件名。例如:rootlocalhost bin#gedit test11#! /bin/Bashfor i in a,b,c,e,I 2,4,6,8doecho $idone注意:在循环列表中的空格可表示换行。3.5.2 while循环语法:while 表达式do操作done只要表达式为真,do和done之间的操作就一直会进行。例如:rootlocalhost bin#gedit test13total =0num=0 while(num=100);do total=expor $total +$ num doneecho “The result is $total”3.5.3 until循环语法:until 表达式do操作done重复do和done之间的操作直到表达式成立为止。例如:rootlocalhost bin#gedit test15total =0num=0 until $num gt 100 do total=expor $total +$ num num=expor $num + 1doneecho “The result is $total”3.6条件结构语句Shell程序中的条件语句主要有if语句与case语句。3.6.1 if语句语法:if 表达式1 then操作elif表达式2 then操作elif表达式3 then操作else操作fiLinux里的if的结束标志是将if反过来写成fi;而elif其实是else if的缩写。其中,elif理论上可以有无限多个。例如:rootlocalhost bin#gedit test16for(j=0;j=10;j+) do if($j%2=1) then echo “$j”fidone3.6.2 case语句语法:case 表达式 in值1|值2)操作;值3|值4)操作;值5|值6)操作;*)操作;esaccase的作用就是当字符串与某个值相同是就执行那个值后面的操作。如果同一个操作对于多个值,则使用“|”将各个值分开。在case的每一个操作的最后面都有两个“;”分号是必需的。Linux是一个多用户操作系统,以下程序根据不同的用户登录输出不同的反馈结果:rootlocalhost bin#vi test17#!/bin/shcase $USER inbeechen) echo “You are beichen!”;liangnian)echo “You are liangnian”; /注意这里只有一个分号 echo “Welcome !”; /这里才是两个分号root) echo “You are root!”;echo “Welcome !”; /将两命令写在一行,用一个分号作为分隔符*) echo “Who are you?$USER?”;easc3.7在Shell脚本中使用函数Shell程序也支持函数。函数能完成一特定的功能,可以重复调用这个函数。函数格式如下:函数名( )函数体函数调用方式为函数名 参数列表求和函数:rootlocalhost bin#gedit test18#!/bin/shadd()a=$1b=$2z=expr $a + $becho “The sum is $z”add $1 $2执行脚本:rootlocalhost bin#./ test18 10 20 The sum is 303.8在Shell脚本中调用其他脚本在Shell脚本的执行过程中,Shell脚本支持调用另一个Shell脚本。以下例子是在test19中调用test20:#test20脚本#!/bin/shecho “How are you $USER?”#test19脚本#!/bin/shecho “The main name is $0”./test20echo “The first string is $1”执行脚本:rootlocalhost bin#./ test19 abc123The main name is ./test19How are you root?the first string is abc123四、 Shell与oracle数据库的交互Shell通过sqlplus与oracle数据库进行交互,包括对表的增、删、改、查。4.1shell向库表中新增数据以函数的形式举例向库表中新增数据:#!/bin/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论