文档详情

3 Linux shell 程序设计2.ppt

发布:2015-07-30约9.35千字共79页下载文档
文本预览下载声明
Linux shell 程序设计 深入认识Linux的前奏 什么是Shell? Shell是用户和Linux(Linux内核)之间的接口程序。在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的shell命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。 Shell的基本工作原理 进入循环 打出提示符 获得用户输入的命令 解释命令(找到相应的可执行文件) 创建新进程 子进程载入可执行文件执行 父进程等待子进程结束 子进程结束,父进程继续执行 继续循环 shell 是如何执行命令解释的 shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序 shell的内部命令或应用程序将被分解为系统调用并传给Linux内核 最常用的shell 在Linux 和 UNIX系统里可以使用多种不同的shell。最常用的几种是Bourne shell (sh), C shell (csh), 和 Korn shell (ksh),bash等。 Bourne shell 的作者是 Steven Bourne。它是 UNIX最初使用的shell并且在每种UNIX上都可以使用。Bourne shell 在 shell编程方面相当优秀,但在处理与用户的交互方面作得不如其他几种 shell。 C shell 由 BillJoy所写,它更多的考虑了用户界面的友好性 最常用的shell Korn shell (ksh) 由 Dave Korn 所写。它集合了C shell 和 Bourne shell的优点并且和 Bourne shell 完全兼容。 bash 是大多数Linux 系统的缺省 shell。Bourne Again shell (bash), 正如它的名字所暗示的,是Bourne shell 的扩展。bash 与Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。 Shell脚本 Shell程序也可存放在文件上,通常称为脚本。 Shell脚本可以包含任意从键盘输入的Linux命令。 例:由三条简单命令组成的shell程序(文件名为exl) 例:带有控制结构的shell程序( 文件名为ex2 ) Shell脚本的建立 建立shell脚本的步骤与建立普通文本文件的方式相同,利用编辑器( 如vi )进行程序录入和编辑加工。例如,要建立一个名为ex1的shell脚本,可在提示符后输入命令 $ vi ex1 进入插入方式后,就可录入程序行,完成编辑后保存,返回到shell命令状态 执行Shell脚本的方式 输入重定向到shell脚本 $ bash 脚本名 例:$ bash ex1 以脚本名作为参数 例:$ bash ex2 /usr/meng /usr/zhao 注意: 直接编辑生成的文件没有“执行” 权限,需利用命令chmod将它置为有执行权限 $chmod a+x ex2 该脚本所在目录应被包含在命令搜索路径(PATH)中。 命令历史 bash提供了命令历史功能, 即系统为每个用户维护一个命令历史文件(即~/. bash_history),它在用户的主目录之下。该文件由编号的表格构成。每当注册后,用户输入命令并执行它时,该命令就自动地加到这个命令历史表中。使用命令历史机制,用户可以方便地调用或者修改以前的命令,可以把全部或部分先前命令作为新命令予以快捷执行。这一功能称为历史替换。 显示历史命令 不带任何参数 $ history …… 显示历史命令 history后有一正整数 $ history 50 只显示历史表中的最后50行 history后给出一个文件名 $ history ax 就把ax作为历史文件名 可以利用键盘上的上下方向键在历史命令中切换,找到需要的命令可以修改然后按回车就可以执行。若不修改直接回车执行。 执行历史命令 !! 重复上一条命令 !n 重新执行第n条历史命令 !-n 重新执行倒数第n条历史命令 !string 重新执行以字符串string开头的最近的历史命令行。如:!ca 表示访问前面最近的cat命令
显示全部
相似文档