今天,我们从一个问题开始:
一台计算机要播放出”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程序如何编写。
范例一:让变量 sum 进行 100+300+50 的加总结果
[root@linux ~]# sum=100+300+50
[root@linux ~]# echo $sum
100+300+50
[root@linux ~]# declare -i sum=100+300+50
[root@linux ~]# echo $sum
450
范例二:将 sum 变成环境变量
[root@linux ~]# declare -x sum
范例三:让 sum 变成唯读属性,不可更改(如需还原只能重启shell)
[root@linux ~]# declare -r sum
[root@linux ~]# sum=tesgting
-bash: sum: readonly variable
使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):
# !/bin/bash
…
注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh,其他类似。
符号#!用来告诉系统执行该脚本的程序,本例使用/bin/bash。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:
chmod +x filename
此后在该脚本所在目录下,输入 ./filename 即可执行该脚本。
[root@localhost shell]# vi sh01.sh
#!/bin/bash
# Program:
# This program shows "Hello World!" in your screen.
# History:
# 2011/09/13 XJM First release
echo -e "Hello World! \a \n"
exit 0
功能说明:显示文字。
语 法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息
简单shell程序(脚本一) 使用Shell命令实现
就写这么多吧,这个是个奇妙的境界,欢迎每一位有志向的孩纸进入这扇大门。