欢迎来到天天文库
浏览记录
ID:49262490
大小:328.00 KB
页数:72页
时间:2020-02-02
《Shell编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux开发基础原仓周第三章Shell编程Shell的工作原理Shell的种类在Bash中的操作Shell的登录环境环境和Shell变量基础Shell编程什么是shellShell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协
2、调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其它程序向Linux传递命令时,内核会做出相应的反应。shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其它应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。Shell命令有两种形式:内部命令,
3、存在于内存中,比如cd。外部命令,存在于文件系统中某个目录下的单独的程序,例如cp、rmshell的工作原理Linux系统Shell的启动过程:1)内核(/unix,/vmunix,/boot/zImage等)将加载至内存,直到系统关机;2)init将扫描/etc/inittab(inittab列出可用的终端及其属性),一旦找到活动的终端,mingetty会给出login提示符和口令,mingetty提示输入用户及口令;3)将用户名及口令传递给login,login验证用户及口令是否匹配,如果身份验证通过,login将会自动转到其$HOME
4、;4)将控制权移交到所启动的任务(在移交之前分别完成setgid,setuid).如在/etc/passwd文件中用户的shell为/bin/sh。5)读取文件/etc/profile和$HOME/.profile中系统定义变量和用户定义变量,系统给出shell提示符$PROMPT,对普通用户用"$"作提示符,对超级用户(root)用"#"作提示符。6)在shell提示符,就可以键入命令名称(或shell程序)及所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+
5、c发出中断信号来中断它。7)当用户准备结束登录对话进程时,可以键入logout命令、exit命令或按ctrl+d,结束后控制权将交给init。Linux的启动过程shell的种类shell有多种类型,最常用的几种是Bourneshell(shbash)、Cshell(cshtcsh)和Kornshell(ksh)。三种shell各有优缺点:Bourneshell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourneshell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其它几种shell。Linux操作
6、系统缺省的shell是BourneAgainshell,它是Bourneshell的扩展,简称Bash,与Bourneshell完全向后兼容,并且在Bourneshell的基础上增加、增强了很多特性。它可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多Cshell和Kornshell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。Cshell是一种比Bourneshell更适于编程的shell,它的语法与C语言很相似。Tcsh是Cshell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换
7、、作业控制和类似C语言的语法,它不仅和Bashshell是提示符兼容,而且还提供比Bashshell更多的提示符参数。Kornshell集合了Cshell和Bourneshell的优点并且和Bourneshell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。Linux还包括了一些流行的shell如ash、zsh等。在Bash中的操作技巧(1/2)Bash命令行具有命令和文件名扩展特性当输入一个还没完成的命令或文件名时,只需键入Tab键就能激活命令和文件名扩展特性,从而
8、完成该命令的剩余输入。$catmy$catmyfileBash也能列出当前目录下部分匹配的文件名来完成文件名扩展。如果键入Esc,然后键入?,shell将列出所有与输
此文档下载收益归作者所有