【原创】Linux下Shell编程全解析
0赞今天,我们从一个问题开始:
一台计算机要播放出”music”,需要些什么呢?
1、需要有“声卡芯片”硬件设备,否则怎么会有声音。
2、操作系统的核心可以支持这个芯片集,当然还需要提供芯片的驱动程序。
3、需要用户(就是你)输入发生声音的命令。
操作系统是一个系统资源的管理者与分配者,当有需求时,得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害。
操作计算机,可以通过命令(command)或是程序(program)
程序有编译器(compiler)将程序转为计算机识别的二进制代码,可是命令呢?其实命令由输入设备读取,然后由命令解析器将其转为计算机可以了解的机器码,然后执行它。
Linux下命令解释器称为Shell,Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。它接收用户输入的命令并把它送入内核去执行。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。----以下内容来自于教材。
(1)Bourne Shell是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
(2)C Shell是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。
(3)Korn Shell是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
(4)Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。
不论是哪一种Shell,它最主要的功用都是解译使用者在命令列提示符号下输入的指令。
当登录系统(login)时,一个交谈式的shell 会跟着起动,并提示您输入命令。在键入一个命令后,接着就是 shell 的工作了,它会进行:
1. 语法分析命令列
2. 处理万用字符(wildcards)、转向(redirection)、管线(pipes)与工作控制(job control)
3. 另外,shell 还管理档案输入输出及幕后处理(background processing)。在处理命令列之后,shell 会寻找命令并开始执行它们。
刚开始学UNIX/Linux系统时,大部份的时间会花在于提示符号(prompt)下执行命令
Shell 的另一个重要功用是提供个人化的使用者环境,这通常在 shell 的初始化档案中完成(.profile、.login、.cshrc、.tcshrc 等等)。这些档案包括了设定终端机键盘和定义窗口的特征;设定变量,定义搜寻路径、权限限、提示符号和终端机类形;以及设定特殊应用程序所需要的变量,例如窗口、文字处理程序、及程序语言的链接库。
知道了shell以后,我们来举例说明shell程序如何编写。
-bash: sum: readonly variable
使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):
# !/bin/bash
…
注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh,其他类似。
符号#!用来告诉系统执行该脚本的程序,本例使用/bin/bash。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:
chmod +x filename
此后在该脚本所在目录下,输入 ./filename 即可执行该脚本。
–version 显示版本信息
简单shell程序(脚本一) 使用Shell命令实现
就写这么多吧,这个是个奇妙的境界,欢迎每一位有志向的孩纸进入这扇大门。