请各位帮个忙。
| sdccf 回复于:2003-12-14 09:29:31 |
| http://unix-cd.com/softdown |
| sysgxb 回复于:2003-12-14 14:46:20 |
| [转贴]Unix系列shell程式编写(上)
*Shell是什么? 任何发明都具备供用户使用的界面。UNIX供用户使用的界面就是Shell(DOS的command熟悉吧,但UNIX的要强大的多)。 Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。 为了不同的需要,UNIX提供了不同的Shell。现在的UNIX大部分都支持BourneShell,以下教程就以BourneShell(Bsh)为例,一步步的领略UNIX Shell的强大功能,占先其强大魅力,达到更方便灵活的管理、应用UNIX的目的。 1.UNIX内核和Shell的交互方法 启动UNIX时,程式UNIX(内核)将被调入电脑内存,并一直保留在内存中直到机器关闭。在引导过程中,程式 init将进入后台运行一直到机器关闭。该程式查询文档/etc/inittab,该文档列出了连接终端的各个端口及其特征。当发现一个活动的终端时,init程式调用getty程式在终端上显示login等登陆信息。(username和passwd),在输入密码后, getty调用login进程,该进程根据文档/etc/passwd的内容来验证用户的身份。若用户通过身份验证,login进程 把用户的home目录配置成当前目录并把控制交给一系列setup程式。setup程式能够是指定的应用程式,通常setup程式 为一个Shell程式,如:/bin/sh 即Bourne Shell(command出来了,呵呵)。 得到控制后,Shell程式读取并执行文档/etc/.profile连同.profile。这两个文档分别建立了系统范围内的和 该用户自己的工作环境。最后Shell显示命令提示符,如$。(这是以bsh为例,若是csh,为.cshrc,ksh为.kshrc,bash为.bashrc等等) 注:(不妨把/etc/.profile和.profile看成DOS的autoexec.bat 或 config.sys文档) 当shell退出时,内核把控制交给init程式,该程式重新启动自动登陆过程。有两种方法使shell退出,一是用户执行exit命令,二是 内核(例如root用kill命令)发出一个kill命令结束shell进程。shell退出后,内核回收用户及程式使用的资源。 用户登陆后,用户命令同电脑交互的关系为:命令进程--->Shell程式--->UNIX内核--->电脑硬件。当用户输入一个命令,如$ls, Shell将定位其可执行文档/bin/ls并把其传递给内核执行。内核产生一个新的子进程调用并执行/bin/ls。当程式执行完毕后,内核取消 该子进程并把控制交给其父进程,即Shell程式。例如执行: $ps 该命令将会列出用户正在执行的进程,即Shell程式(下来周详说说,别急现在)和ps程式。若执行: $sleep 10 & $ps 其中第一条命令将产生一个在后台执行的sleep子进程。ps命令执行时会显示出该子进程。 每当用户执行一条命令时,就会产生一个子进程。该子进程的执行和其父进程或Shell完全无关,这样能够使Shell去做其他工作。(Shell只是把用户的意图告诉内核,然后该干嘛干嘛:)) 现在windows有个计划任务(在固定的时间,日期自动执行某任务),其实UNIX很早就有这个功能了,也就是所谓的Shell的自动执行。一些UNIX 资源,如cron能够自动执行Shell程式而无需用户的参和,(这个功能好象在/var/spool/crotab目录里)。 Crontab 程式对于系统管理员来说是很有用的。Cron 服务用于计划程式在特定时间(月、日、周、时、分)运行。我们以root的crontab 为例。根用户的 crontab 文档放在 /var/spool/crontab/root 中,其格式如下: (1) (2) (3) (4) (5) (6) 0 0 * * 3 /usr/bin/updatedb 1. 分钟 (0-60) 2. 小时 (0-23) 3. 日 (1-31) 4. 月 (1-12) 5. 星期 (1-7) 6. 所要运行的程式 2.Shell的功能和特点 1>命令行解释 2>使用保留字 3>使用Shell元字符(通配符) 4>可处理程式命令 5>使用输入输出重定向和管道 6>维护一些变量 7>运行环境控制 8>支持Shell编程 对于"命令行解释"就不多说了,就是在shell提示符(例如:"$","%","#"等)后输入一行unix命令,Shell将接收用户的输入。 "使用保留字":Shell有一些具备特别意义的字,例如在Shell脚本中,do,done,for等字用来控制循环操作,if,then等控制条件操作。 保留字随Shell环境的不同而不同。 "通配符":* 匹配任何位置 ? 匹配单个字符 [] 匹配的字符范围或列表 例如: $ls [a-c]* 将列出以a-c范围内字符开头的任何文档 $ls [a,m,t]* 将列出以e,m或t开头的任何文档 "程式命令" :当用户输入命令后,Shell读取环境变量$path(一般在用户自己的.profile中配置),该变量包含了命令可执行文档可能存在的目录列表。 shell从这些目录中寻找命令所对应的可执行文档,然后将该文档送给内核执行。 "输入输出重定向及管道" :重定向的功能同DOS的重定向功能: ">" 重定向输出 "<" 重定向输入 而管道符号,是unix功能强大的一个地方,符号是一条竖线:"|",用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2,例如: $ls -s|sort -nr|pg 该命令列出当前目录中的任何文档,并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。然后把排序后的 内容传送给pg命令,pg命令在显示器上显示sort命令排序后的内容。
文章整理:西部数码--专业提供域名注册、虚拟主机服务 相关文章
热点关注
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源 网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧 行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒 网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer 网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash 程序设计 Java技术 C/C++ VB delphi 网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术 操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD |




