收藏 分享(赏)

Linux下Shell编程.ppt

上传人:dcjskn 文档编号:6001889 上传时间:2019-03-23 格式:PPT 页数:32 大小:318KB
下载 相关 举报
Linux下Shell编程.ppt_第1页
第1页 / 共32页
Linux下Shell编程.ppt_第2页
第2页 / 共32页
Linux下Shell编程.ppt_第3页
第3页 / 共32页
Linux下Shell编程.ppt_第4页
第4页 / 共32页
Linux下Shell编程.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、Linux下Shell编程简介,刘桂海( 西安理工大学 计算机科学与工程学院,陕西 西安 710048),2019/3/23,西安理工大学计算机科学与工程学院,内容安排,综述篇 命令篇 变量篇 条件测试篇 控制结构篇 函数篇,2019/3/23,西安理工大学计算机科学与工程学院,综述篇,Shell是什么 怎样写Shell Cygwin简介 Linux黑洞,西安理工大学计算机科学与工程学院,综述篇Shell是什么,壳(Shell)保护其内部的核(Kernel),2019/3/23,西安理工大学计算机科学与工程学院,综述篇Shell是什么,Shell是一种具备特殊功能的程序, 它是介于使用者和 U

2、NIX/Linux 操作系统之核心程序(kernel)间的一个接口。 为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。 使用较广的shell有标准的Bourne shell (sh)、Korn Shell(ksh)、C shell (csh)、Bourne Again Shell(bash)等。 查看当前环境所用shell:echo $SHELL shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数

3、、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。 本质上,shell 脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的。它接收用户命令,然后调用相应的应用程序。,2019/3/23,西安理工大学计算机科学与工程学院,综述篇怎样写Shell,利用vi编辑器编辑脚本,将脚本命名为脚本功能.sh Shell脚本不是复杂的程序,它是按行解释的,脚本第一行总是以 #!/bin/sh 开头,它通知系统以下的Shell程序使用系统上的Bourne Shell来解释。 第二行注释中写入脚本名,第

4、三行注释开始写入脚本功能习惯。 以下行进入脚本正式编写 编写完后给脚本添加执行权限:chmod u+x ScripName 运行脚本:ScripName或 ./ScripName,简单脚本示例: vi ShowHello.sh 以下为脚本内容: #!/bin/sh #ShowHello.sh #To show hello to somebody echo -n“Enter Your Name:” read NAME echo “Hello,$NAME!” 保存,退出vi编辑器。 为脚本添加可执行权限: chmod u+x ShowHello.sh 运行脚本:ShowHello.sh,2019/

5、3/23,西安理工大学计算机科学与工程学院,综述篇cygwin简介,cygwin在windows下开发linux程序! cygwin是一个在windows平台上运行的linux模拟环境,是cygnus solutions公司开发的自由软件。它把gcc、gdb、gas等开发工具进行了改进,使它们能够生成并解释win32的目标文件,开发者基于win32 api写了一个unix系统库的模拟层 ,只要把这些工具的源代码和这个共享库(cygwin dll )连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集 。 软件下载:cygwin的官方网站:推荐下载:htt

6、p:/ 软件安装:在安装的过程中可选择默认安装路径:c:cygwin安装完后要修改cygwin目录下的cygwin.bat文件,在echo off 后面加上set CYGWIN=title ntea,这是因为Cygwin的启动批处理文件需要启动Unix文件系统模拟。,2019/3/23,西安理工大学计算机科学与工程学院,综述篇Linux黑洞,/dev/null 是一个虚设的设备,俗称“Linux黑洞”,任何对/dev/null的写入都会成功,但数据会消失得无影无踪,没有任何反馈。所以经常把不想在屏幕显示的信息全部送到/dev/null中,在shell脚本中用得比较多。如:ls l /dev/n

7、ull 还可以用来清空文件的内容:cat /dev/null FileName,2019/3/23,西安理工大学计算机科学与工程学院,命令篇,用户管理 目录管理 文件管理 权限管理,2019/3/23,西安理工大学计算机科学与工程学院,命令篇用户管理,新建用户(user add)useradd UserName新建用户后,会在/home目录下建立一个以UserName命名的文件夹,用户每次登录时自动定位到该文件夹下。 为用户添加密码(password)passwd UserName 删除用户(user delete)userdel UserName 使用p选项可以删除用户目录下的文件及与用户相

8、关联的其他文件。 新建组群(group add) groupadd GroupName 删除组群(group delete)groupdel GroupName,2019/3/23,西安理工大学计算机科学与工程学院,命令篇用户管理,用户身份whoami 查看登录用户who 选项-a 显示所有用户的所有信息-H 显示列标题 查看用户的操作w 某一时刻用户的行为 用户间切换(substitute user)su UserName 如:su 或su root 切换为根用户su Haison 切换为名为Haison的用户,2019/3/23,西安理工大学计算机科学与工程学院,命令篇目录管理,创建目录(

9、make directory)mkdir DirecName 删除目录(remove directory)rmdir DirecName 显示工作目录(print working directory)pwd 显示目录内容(list)ls 选项 选项:-a 显示当前目录下的所有文件,包括以.开头的文件。-l 以长列表的形式显示文件列表,如:-rw-r-r- 1 haison haison 18 Nov 2 10:10 haison.c,2019/3/23,西安理工大学计算机科学与工程学院,命令篇目录管理,改变当前目录(change directory)cd 或 cd 进入登录时的主目录cd /

10、进入根目录cd 进入上一级目录cd /home 进入系统的home目录cd home 进入当前目录下的home目录 目录重命名(move)mv SourceDirecName TargetDirecName 目录拷贝(copy)cp SourceDirec TargetDirec-r 拷贝目录下的文件、子目录及子目录下的文件,2019/3/23,西安理工大学计算机科学与工程学院,命令篇文件管理,新建文件FileName 或 touch FileName 或 vi FileName 删除文件(remove file)rm 选项 FileName选项:-i 系统提示是否真要删除该文件-f 删除文件

11、之前不提示任何确认信息-r 递归删除目录下所有子目录的内容 文件拷贝(copy)cp SourceFile TargetFile 文件链接(link)ln s SourceFile TargetFile创建文件链接,用ls l查看,会看到TargetFile-SourceFile,2019/3/23,西安理工大学计算机科学与工程学院,命令篇文件管理,显示文件内容more FileName 一次一屏的显示文件内容,空格或回车显示下一屏less FileName 一次一屏的显示文件内容,空格或回车显示下一屏cat FileName 一次全部显示文件的内容cat file1 file2file3 将

12、file1、file2的内容写到file3,覆盖file3原内容cat file1file2 将file1的内容追加到file2,file2原内容不变head FileName 只显示文件的前10行head n FileName 显示文件的前n行tail FileName 只显示文件的后10行tail n FileName 显示文件的后n行nl FileName 以编号的形式一次全部显示文件的内容,忽略空格,2019/3/23,西安理工大学计算机科学与工程学院,命令篇文件管理,文件移动/重命名(move)mv SourceFile TargetFile 将一个或多个文件移动到另外一个目录下,或

13、者将一个文件重命名为另一个文件。 文件查找(find) find 路径 选项如:find / -name “Linux” -print 文件内容查找(grep)如:grep “main” haison.c 文件类型命令ls l以长列表形式显示文件的类型等,如:-rw-r-r-,2019/3/23,西安理工大学计算机科学与工程学院,命令篇权限管理,文件访问权限一个文件一经创建,就具有三种访问方式,一个文件由1个类型和9个权限位来描述,9个权限位分为3组,每组3个权限位,具体表示如下所示:,2019/3/23,西安理工大学计算机科学与工程学院,命令篇权限管理,改变文件/目录的权限(change m

14、ode)chmod u/g/o/a +/-/= 权限 FileName/DirecName其中:+:增加指定的权限-:去掉指定的权限=:清除所选的权限并将其设置为制定的权限chmod允许使用八进制符号作为模式,改变权限。chmod PermissionCode FileName/DirecName其中, PermissionCode 按如下方式计算,4+2+1=7,4+2=6,4+1=5,所以该文件/目录具有的权限为:765,2019/3/23,西安理工大学计算机科学与工程学院,命令篇权限管理,chmod命令示例 假定haison.c最初具有这样的权限rwxrwxrwx,连续操作如下,2019

15、/3/23,西安理工大学计算机科学与工程学院,命令篇权限管理,-rw-r-r- 1 haison haison 18 Nov 2 10:10 haison.c 改变文件/目录的属主(change owner)chown Owner FileName/DirecName如:chown Dave haison.c 改变文件/目录的属组(change group)chgrp Group FileName/DirecName如:chgrp Dave haison.c 改变文件/目录的属主和属组 chown owner:group FileName/DirecName 如:chown Dave:Dave

16、 haison.c,2019/3/23,西安理工大学计算机科学与工程学院,变量篇,变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使系统获知用户相关设置,也用于保存暂时信息。 变量一般都用大写字母表示 使用 echo命令可以显示单个变量的取值,要在变量名前面加$如:USER=“haison” echo $USER 如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly 使用set命令可以显示所有本地定义的shell变量 使用unset 变量名可以清除对变量的定义,2019/3/23,西安理工大学计算机科学与工程学院,变量篇,2019/3/23,西安理工大

17、学计算机科学与工程学院,变量篇,示例: #!/bin/sh #VarTest.sh #To test the variables USER=haison echo “Hello,$USER,the output of this script are as follows:“ echo “The script name is :basename $0“ echo “The first param of the script is :$1“ echo “The second param of the script is :$2“ echo “The tenth param of the scrip

18、t is :$10“ echo “All the params you input are :$*“ echo “The number of the params you input are:$#“ echo “The process ID for this script is :$“ echo “The exit status of this script is :$?“,2019/3/23,西安理工大学计算机科学与工程学院,条件测试篇,文件状态测试,示例: -s haison.c 0表示成功,其他为失败,下同。,逻辑操作符-a 逻辑与(and),操作符两边均为真,结果为真,否则为假。-o

19、逻辑或(or),操作符两边一边为真,结果为真,否则为假。! 逻辑否,条件为假,结果为真,反之。,示例: -r haison.c a w hai.c ,2019/3/23,西安理工大学计算机科学与工程学院,条件测试篇,字符串测试,示例: -z $SHELL ,数值测试,示例: “10” -eq “12” ,2019/3/23,西安理工大学计算机科学与工程学院,控制结构篇,2019/3/23,西安理工大学计算机科学与工程学院,控制结构篇if语句,格式1if 条件 then命令fi,格式2if 条件 ; then命令fi,或,格式3if 条件 then命令1else命令2fi,格式4if 条件1 t

20、hen命令1elif 条件2 then 命令2else 命令3fi,示例 #!/bin/sh #ifTest #to show the method of if echo -e “Enter the first integer:c“ read FIRST echo -n “Enter the second integer:“ read SECOND if “$FIRST“ -gt “$SECOND“ then echo “$FIRST is greater than $SECOND“elif “$FIRST“ -gt “$SECOND“ then echo “$FIRST is less th

21、an $SECOND“ elseecho “$FIRST is equal to $SECOND“ fi,2019/3/23,西安理工大学计算机科学与工程学院,控制结构篇case语句,格式case 值 in模式1)命令1;*)命令n;esac 取值后面必须为单词in,每一个模式必须以右括号 结束。取值可以为变量或常数。取值检测匹配的 每一个模式,一旦模式匹配,其间所有命令开始 执行直至;。执行完匹配模式相应命令后不再继 续其他模式。如果无一匹配模式,使用*号捕获 该值,再接受其他输入。,示例 #!/bin/sh #caseTest #to test the method of case USE

22、R=whoamicase $USER in root)echo “You can do all the operations”; Dave)echo “You can do some operations” ; *)echo “Sorry,you can not do anything“ ; esac,2019/3/23,西安理工大学计算机科学与工程学院,控制结构篇for循环,格式 for 变量名 in 列表 do命令 done当变量值在列表里,for循环即执行 一次所有命令,使用变量名访问列 表中取值。 嵌套循环可以将一个for循环嵌在 另一个for循环里,示例 #!/bin/sh #for

23、Test #to test the method of for COUNTER=0 for FILES in * do COUNTER=expr $COUNTER + 1 done echo “There are $COUNTER files in pwd “,2019/3/23,西安理工大学计算机科学与工程学院,控制结构篇until循环,格式until 条件do命令doneuntil 执行一系列命令,直至条件为真 时停止,示例 #!/bin/sh #untilTest #to test the mothod of until IS_ROOT=who|grep root until “IS_R

24、OOT“ do IS_ROOT=who|grep root sleep 5 done echo “Watch it.root in!“,2019/3/23,西安理工大学计算机科学与工程学院,控制结构篇while循环,格式 while 命令 do命令 doneWhile循环用于不断执行一系列命令, 也用于从输入文件中读取数据。虽然 通常只有一个命令,但在while和do之 间可以放几个命令。命令通常用作测 试条件,只有当命令的退出状态为0 时,do和done之间命令才被执行,如 果退出状态不是0,则循环终止。,示例 #!/bin/sh #whileTest #to test the method

25、 of while COUNTER=0 while $COUNTER -lt 10 doecho $COUNTERCOUNTER=expr $COUNTER + 1 donewhile read LINE doecho $LINE done names.txt,2019/3/23,西安理工大学计算机科学与工程学院,函数篇,格式 函数名 () 命令 所有函数在使用前必须定义,这意味着必 须将函数放在脚本开始部分,直至shell解释 器首次发现它,才可以使用。调用函数仅使用其函数名即可,要传给函 数的变量跟在函数后面。函数里面定义的变量以下划线(_)开始。函数可以放在同一个文件中作为一段代 码,也可以放在只包含函数的单独文件中,文 件也必须以#!/bin/sh开头。,示例1 #!/bin/sh #funTest #to test the function DATE=date Hello() echo “Hello,today is $DATE” Hello,示例2 #!/bin/sh #funTest #to test the function. ./Hello Hello,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报