欢迎来到天天文库
浏览记录
ID:21894383
大小:64.50 KB
页数:23页
时间:2018-10-25
《shell简明讲义》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Shell简明讲义一、Shell基础Shell是什么呢?确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控
2、制结构,包括循环和分支。它虽然不是Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。因此,对于用户来说,Shell是最重要的实用程序,深入了解和熟练掌握Shell的特性极其使用方法,是用好Linux系统的关键。可以说,Shell使用的熟练程度反映了用户对Linux使用的熟练程度。Linux中的shell有多种类型,其中最常用的几种是Bourneshell(sh)、Cshell(csh)和Kornshell(ksh)。三种shell各有优缺点。Bourneshell是U
3、NIX最初使用的shell,并且在每种UNIX上都可以使用。Bourneshell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是BourneAgainshell,它是Bourneshell的扩展,简称Bash,与Bourneshell完全向后兼容,并且在Bourneshell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多Cshell和Kornshell中的优点,有灵
4、活和强大的编程接口,同时又有很友好的用户界面。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。 Linux提供了像MicrosoftWindows那样的可视的命令输入界面--XWindow的图形用户界面(GUI)。它提供了很多窗口管理器,其操作就象Windows一样,有窗
5、口、图标和菜单,所有的管理都是通过鼠标控制。现在比较流行的窗口管理器是KDE和GNOME。 每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。 同Linux本身一样,Shell也有多种不同的版本。目前主要有下列版本的Shell: BourneShell:是贝尔实验室开发的。 BASH:是GNU的BourneAgainShell,是GNU操作系统上默认的shell。 KornShell:是对BourneSHell的发展,在大部分内容上与BourneShell兼容。
6、CShell:是SUN公司Shell的BSD版本。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi.二、程序基础:1.程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序。要使脚本可执行:chmod+xfilename然后,您可以通过输入:./filename来执行您的脚本。注释在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间
7、内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。变量在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:变量名=值取出变量值可以加一个美元符号($)在变量前面2.HelloWorld#!/bin/sh#对变量赋值:a="helloworld"#现在打印变量a的内容:echo"Ais:"echo$a在编辑器中输入以上内容,然后将其保存为一个文件HelloWorld。之后执行chmod+xHelloWorld 使其可执行,最后输
8、入./HelloWorld执行该脚本。这个脚本将会输出:Ais:helloworld有时候变量名很容易与其他文字混淆,比如:num=2echo"thisisthe$numnd" 这并不会打印出"thisisthe2nd",而仅仅打印"thisisthe",因为
此文档下载收益归作者所有