10-1shell编程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《10-1shell编程.ppt》由会员分享,可在线阅读,更多相关《10-1shell编程.ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux Shell编程编程第一个shell程序用 vi 编辑器编辑一个hello文件,内容如下:#!/bin/bash#This is the first shell programecho Hello World!基于bash的shell程序程序编译和运行过程一般步骤:编辑文件保存文件将文件赋予可以执行的权限运行及排错常用到的命令:vi,编辑、保存文件ls-l 查看文件权限chmod 改变程序执行权限直接键入文件名运行文件2023年1月13日shellshell程序的编辑和执行程序的编辑和执行查看权限查看权限,初始状态无执行(x)权限增加可执行(x)的权限查看权限,已经具备执行(x)权限
2、运行程序程序运行过程输出2023年1月13日shellshell程序设计程序设计一般结构shell类型函数主过程#!/bin/bashfunction fun1().funciton funn().函数定义shell类型主过程执行该程序$bash hello或者$chmod u+x hello$./hello此处没有直接$hello是因为当前目录不是当前用户可执行文件的默认目录,而将当前目录设为默认目录是一个不安全的设置shell接受并执行命令的程序称为 shell。它位于用户和操作系统之间。UNIX shell 和 Linux shell 的功能都非常强大,可以通过组合一些基本的函数来构造非
3、常复杂的操作。通过使用编程结构则可以构建一些函数在 shell 中直接执行,或者将这些函数保存成 shell 脚本 的形式,这样就可以一次次重用这些函数了。有时需要在系统引导之前就执行一些命令,以便能够进行终端连接;有时又需要周期性地执行命令,而不管登录与否。shell 可以完成这些功能。标准输入和输出并不需要来自于(或定向到)终端处的真实用户。shell是一种命令解释程序(命令解释器),shell解释用户输入的命令行,提交系统内核处理,并将结果返回给用户。与Linux命令一样都是实用程序,但两者又有区别。一旦用户注册到系统后,shell就被系统装入内存,并一直运行到用户退出系统之止;而一般命
4、令仅当被调用时,才由系统装入内存执行。shell本身也是一种可编程的程序设计语言。用shell写的程序(shell脚本)相当于dos/windows下的批处理文件,它可以简单到只有一条命令,也可以复杂到包括大量循环、条件语句、数学运算、控制结构,也可以是介于两者之间的程序。shell允许通过编程来完成复杂的功能处理,但作为语言与高级语言相比较具有不同的特点:(1)shell是解释性的,多数高级语言是编译性的;(2)shell语言与高级语言处理的对象不同;(3)shell与系统有密切的关系;(4)shell易编写、调试、灵活性较强,但速度低;(5)shell作为命令级语言,命令组合功能很强。sh
5、ell有两种主要语法类型:Bourne shell和C shell,彼此不兼容。Bourne shell家族:sh ksh bash psh zsh;C shell家族:csh tcsh。其中bash和 zsh在不同程度上支持 csh 的语法。这里,再着重介绍一下bash的特点:(1)自动补全功能假设要输入的命令很长,或者命令后面要给的文件名很长。这个时候只要按一个Tab键,bash就会在可能的命令或文件名里面找寻匹配的命令,找到的话就会自动帮你补齐。(2)命令行编辑程序bash的命令行编辑是在提示符下,可对未执行的命令字符任意地修改。(3)命令历史(command history)所谓的命令
6、历史就是把曾经输入过的命令记录起来,方便日后的查询与使用。只要按向上键就可以调出前一个命令,再按一次向上键就可以调出更前一个命令,依此类推,用向下键可以回到下个命令,所以用上、下键就可以选择以前输入过的命令。Shell两大功能命令解释器:解释执行所有的用户命令程序设计语言:具有高级语言的所有功能shell是用户和系统内核之间的接口程序 shell是命令解释器 在本章中,shell指linux的终端即解释用户命令和shell程序的文字终端硬件shell操作系统图形界面其它用户界面用户装入装入UNIX硬件检测硬件检测安装安装rootfs建立建立0号进程号进程产生新进程产生新进程swap对换进程对换
7、进程1号进程号进程init执行执行/etc/inittab初始化各端口初始化各端口gettygetty用户注册用户注册正确吗正确吗建立建立shell进程进程Shell的启动和建立的启动和建立子子父父boot.NYBA命令行形式1.单条命令:$cat file1 最常用命令形式2.多条命令:$pwd;who;date 提高键盘命令输入效率3.复合命令:$ps e|grep student2$(ls;cat file3;pwd)run_log 方便灵活,运行效率高4.后台命令:$ls lR file_list&多进程并发,充分利用系统资源linux下的shell用户使用shell的设定通过查看/e
8、tc/passwd文件可以查看用户使用的shell类型例子:/etc/passwd部分节选webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologinxfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologinntp:x:38:38:/etc/ntp:/sbin/nologingdm:x:42:42:/var/gdm:/sbin/nologinhtt:x:100:101:IIIMF Htt:/usr/lib/im:/sbin/nologintom:x:500:500:tom:/home/tom:/bi
9、n/bashtom:x:500:500:tom:/home/tom:/bin/bash#可见,tom用户使用的shell为bashlinux下的shelllinux下的shell通过cat/ect/shells命令查看安装的shellshell及路径查看shell的命令Shell程序的特点及用途shell程序可以认为是将shell命令按照控制结构组织到一个文本文件中,批量的交给shell去执行 不同的shell解释器使用不同的shell命令语法shell程序解释执行,不生成可以执行的二进制文件可以帮助用户完成特定的任务,提高使用、维护系统的效率 了解shell程序可以更好的配置和使用linux
10、 基于基于bashbash的的shellshell程序程序简单程序示例greeting.sh echo Programme Ends.12say_hello11echo Programme Starts Here.109echo Hello$name8read name7echo Enter Your Name,Please.:65function say_hello()4#a Function3#a Simple shell Script Example2#!/bin/bash1解释输出提示,提示程序结束调用函数程序开始的第一条命令,输出提示信息函数结束输出读入用户的输入到变量nameech
11、o命令输出字符串函数开始以 functin 开始,定义函数同上以#开始,其后为程序注释以#!开始,其后为使用的shellbashbash 是一个为GNU项目编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell。Bourne shell是一个早期的重要shell,由Stephen Bourne在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由Brian Fox创造。在1990年,Chet Ramey成为了主要的维护者。bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格
12、的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只有那些引用了Bourne特殊变量或使用了Bourne的内置命令的脚本才需要修改。bash的命令语法很多来自Korn shell(ksh)和 C shell(csh),例如命令行编辑,命令历史,目录栈,$RANDOM 和$PPID 变量,以及POSIX的命令置换语法:$(.)。作为一个交互式的shell,按下TAB键即可自动补全已部分
13、输入的程序名,文件名,变量名等等。程序的运行当用户输入一行命令后,shell负责解释、分析输入的内容,并且决定做什么,同时替系统内核删除命令行中不必要的信息。命令是一个可执行的Linux命令、程序、工具或shell脚本。例1:ls-l file1 file2 file3例2:echo Welcome to Tsinghua University.例3:echo Welcome to Tsinghua University.注意:例2和例3的结果是完全一样的。使用保留字和元字符shell有一些具有特殊意义的字(保留字),如在shell脚本中,像do、done、for、while等保留字控制循环操
14、作,if、then、else等保留字进行条件控制。保留字随shell的不同而不同。在Linux系统里,有一组特殊意义字符,这就是所谓的元字符(通配符)。现在列出一些常用的通配符的意义,供参考。.上一层目录,与cd命令配合用得比较多.目前工作的目录*任意长度的字符?长度为一个的任意字符.括号内的一个字符m 等于某个通配符,如*、?等a-z*小写字母开头的所有字符串 转义符号,用以解除特殊字符的特殊意义 用户目录;分隔符,当命令行有多个命令时,做分隔用 BourneShell的提示符,同时也作为shell语言的位置变量参数#做注释用|建立一个管道,使一命令的输出作为另一个命令的输入&将命令以后台方
15、式执行 将命令的输出重导入文件中相反 将命令的输出加在一个已经存在的文件后面.括号内的一个字符串例:ls t*显示当前目录下以t打头的所有文件。常用 bash 环境变量变量名变量名功能功能USER已登录用户的用户名UID已登录用户的数字用户 idHOME用户的主目录PWD当前工作目录SHELLshell 名$进程 id(或正在运行的 Bash shell 进程或其他进程的 PID)PPID启动这个进程的进程的进程 id(即父进程的 id)?上一个命令的退出码echo 命令的使用命令的使用echo命令的基本功能就是在标准输出上显示命令的基本功能就是在标准输出上显示后面的字符串,或变量的值。当字符
16、串中带空白符后面的字符串,或变量的值。当字符串中带空白符或其它控制字符时,用引号将其括起来。例如:或其它控制字符时,用引号将其括起来。例如:$echo 1234512345$echo “department computer”department computer$echo“My home directory is:$HOME”My home directory is:/usr/teacher/david$echo“Input your choice(y/n)”Input your choice(y/n)shell变量变量环境变量环境变量 常用的常用的shell环境变量及实例环境变量及实例:H
17、OME=/usr/computer/student6 用户主目录用户主目录,注册时的初始目录注册时的初始目录PATH=/bin:/usr/bin:$HOME/bin:./键盘命令的搜索路径键盘命令的搜索路径TERM=linux 当前所用的终端类型当前所用的终端类型PS1=$shell的主提示符的主提示符IFS=域分隔符域分隔符,通常为空白符通常为空白符,用来分隔命令行用来分隔命令行各个域各个域PATH环境变量PATH的构成决定了寻找shell命令和其他程序的途径,是影响shell程序效率的主要因素之一。PATH变量设置要考虑以下几点:在PATH变量中,命令使用得多的程序目录应放在前面,极少用目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 shell 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内