Shell编程基础教程

2009年09月4日  |  12:43 下午分类:大型机|Mainframe  |  标签:  |  

第一章:概述

一、 shell 概念
shell 是unix操作系统提供的命令解释器,是用户与操作系统之间的接口。当你注册到unix系统的任何一个用户,系统都会为你启动一个shell,shell会一直等待你的指令,当你输入的命令被确认后,shell便对其进行解释并产生系统调用,完成相应的操作。然后,又进入等待状态。

换句话说,当你一登录到unix系统,就开始了与shell的对话。在此期间,你不断与shell交互,不断地对shell发出命令来指挥系统完成各种工作直到你退出系统。
事实上unix提供了三种shell,分别是Bourne Shell、C-Shell、Korn Shell。这三种Shell大体相同,只在某些地方有所区别。其中Bourne Shell在各种不同的UNIX版本中都是一致的,所以也叫标准Shell。而其它几种Shell不能简称,必须全称,这是为了不必要的混淆。对于每一个用户来讲,执行一个程序只能选择其中一种Shell,一般是Bourne Shell。当然也可以使用其他Shell,这需要在建立用户的时候指明,或在具体执行某一程序时特殊指定你所选择的命令解释器。下面将要介绍的内容如非特别声明都是针对Bourne Shell的。

二、 Shell的特点和优点
1、 输入/输出的重定向可以很轻易的改变输入输出的来源和目的地。
2、 连接管道可以将一命令的输出作为另一命令的输入。
3、 可将Shell命令键入一个文件,通过执行这个文件来达到执行若干命令的目的。
4、 在不中断前台的操作的情况下,可通过后台方式运行其他命令。
5、 可以把系统命令、Shell命令进行适当的组合,构成一个新命令。
6、 可以执行多种命令,包括Shell内部命令、UNIX系统命令、编译好的可执行文件、甚至是Shell 传递的位置参数。

三、 一个简单的Shell程序
vi test
pwd
cal
:x

在命令行“#”后键入sh test并回车,其结果为:先显示当前路径,然
后再显示日历。这个test就是Shell程序,当然是一个简单的Shell程序,
它只有两行:一行是pwd,另一行是cal.

第二章:Shell基础知识
一、 特殊符号
在Shell中有一些符号具有特殊的含义,可以用来实现某些功能,现叙述如下:
1、 星号(*):可以匹配任何字符串,包括空串。如:echo * 命令将显示当前目录下的所有文件和目录名,lf aa* 将显示所有以aa开头的文件名。使用 * 做匹配符时,应特别小心,如rm * 将删除目录下的所有文件。
2、 问号(?):可以匹配文件名中的任何单个字符。如用lf a??d 命令来显示当前目录下的文件时,其结果可能为:abcd、aacd、aaad等。
3、 中括号([]):可以匹配一个集合的元素。如果[crf]作为一个文件名模式的一部分,Shell将可以查到指定位置的字母为c、r或f的文件名。例如:lf [crf]at 命令的结果可能为:cat、fat、rat等。
中括号也能用于指定的一个字符域,无论是数字还是字母。如:lf chapter[1-9] 其结果将是可能存在的chapter1,chapter2…等文件名。
4、 后台执行符号(&):如果一个程序运行的时间很长,并且不是一个交互式
程序的话,就可以用 & 号使程序以后台的形式执行。其格式为:command &。
5、 分号(;):可以让你在一个命令行或程序的一行中执行多个命令。例如:
#cd;pwd。
6、 反斜杠(\):用于取消特殊字符的特殊含义。例如:lf aa\* 命令将查找
当前目录是否有名为aa*的文件,与lf aa* 命令的含义截然不同。
7、 单引号(‘ ’):取消除单引号以外的任何字符的特殊含义。例如:echo
‘my name is $name’其结果为:my name is $name,此时$只作为一个普
通字符使用了。
8、 双引号(“ ” ):取消除双引号、$号以及_号以外的所有字符的特殊含
义。单引号更加具有强制性。
9、 输入转向符(<):用于指定输入的设备或文件。如:mail root
则将文件message的内容发送给root。
10、输出转向符(>):用于将输出发送到指定的设备或文件中。如:lf>myfile
其结果是将lf的执行结果放到文件myfile中(同时清空文件中原有的数
据),而不显示到屏幕上。又如:将错误输出到重定向到空设备 2>/dev/null。
11、追加符号(>>):用于将命令的输出追加到某个文件中。如:lf >>myfile
其结果是将lf的执行结果追加到文件myfile中(文件原有的数据予以保
留),而不显示到屏幕上。
12、管道符号(|):可以将一个命令的输出作为另一个命令的输入,而不需建
立临时文件,以这样的方式建立的多命令行称为管道线。如:ls|more
将ls 的结果传递给more,由more来分屏显示。
13、改向符号(<<):常用于建立一个here文件。
14、&&和||:其作用是使命令有条件的执行。如:
command1 && command2:当且仅当command1执行成功后才执行command2
command1 || command2:当且仅当command1执行失败后才执行command2

点击查看下一页-Pages:

1 2 3 4 5 6

喜欢本文,那就收藏到: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网

3条评论 关于 “Shell编程基础教程”

  1. 老李菜刀 发表于: 九月 4th, 2009 4:49 下午

    我在努力看 shell编程第三版,好厚的一本书….

    [回复]

  2. 卢松松 发表于: 九月 5th, 2009 12:08 上午

    没学过 不了解这个知识

    [回复]

  3. 志言堂 发表于: 九月 8th, 2009 10:44 下午

    这个不错,我明天到公司实践一下

    [回复]


发表您的评论