荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: tian.bbs@bbs.tju.edu.cn (Fastboot in C++), 信区: Linux
标  题: 教程>>>>>第十九课 TurboLinux Shell
发信站: 天大求实BBS站 (Mon Jun  2 19:59:21 2003)
转信站: SZU!news.tiaozhan.com!UTJ


Linux教程>>>>>第十九课 TurboLinux Shell
  shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用
的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的
特性。

  什么是shell

  Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是
命令语言、命令解释程序及程序设计语言的统称。

  shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的
中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核
会做出相应的反应。

  shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系
统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux
核心。

  有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令
,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对
用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。

  shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的
应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv
,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径
就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在
路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,
该内部命令或应用程序将被分解为系统调用并传给Linux内核。

  shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设
计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控
制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执
行的shell程序中。

  当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了
命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“
$”作提示符,对超级用户(root)用“#”作提示符。

  一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执
行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输
出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行
)。

  当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符
(EOF)(按ctrl+d实现),结束登录。

  我们来实习一下shell是如何工作的。

  $ make work

  make:***No rule to make target ‘work’. Stop.

  $

  注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后
,shell便执行它。本例中,由于输入的命令参数不正确,系统返回信息后停止该命
令的执行。

  在例子中,shell会寻找名为make的程序,并以work为参数执行它。make是一个
经常被用来编译大程序的程序,它以参数作为目标来进行编译。在“make work”中
,make编译的目标是work。因为make找不到以work为名字的目标,它便给出错误信息
表示运行失败,用户又回到系统提示符下。

  另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序
,就会给出错误信息。例如,如果用户键入:

  $ myprog

  bash:myprog:command not found

  $

  可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统
一般会给出这样的错误信息。

  shell的种类

  Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell
(csh)和Korn shell(ksh)。三种shell各有优缺点。Bourne shell是UNIX最初使用的
shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但
在处理与用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是Bourne
 Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容
,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它
有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多
C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户
界面。

  C shell是一种比Bourne shell更适于编程的shell,它的语法与C语言很相似。
 Linux为喜欢使用C shell的人提供了Tcsh。Tcsh是C shell的一个扩展版本。Tcsh包
括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言
的语法,它不仅和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符
参数。

  Korn shell集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容
。Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后
台执行、唤醒或终止程序。

  Linux并没有冷落其他shell用户,还包括了一些流行的shell如ash、zsh等。每
个shell都有它的用途,有些shell是有专利的,有些能从Internet网上或其他来源获
得。要决定使用哪个shell,只需读一下各种shell的联机帮助,并试用一下。

  用户在登录到Linux时由/etc/passwd文件来决定要使用哪个shell。例如:

  # fgrep lisa /etc/passwd

  lisa:x:500:500:TurboLinux User:/home/lisa:/bin/bash

  shell被列每行的末尾(/bin/bash)。

  由于Bash是Linux上缺省的shell,本章主要介绍Bash及其相关知识。






--
 The Best Way Of Learning To Use 【The Linux】 Is To Use It.
※ 来源:·天大求实 bbs.tju.edu.cn·[FROM: 天大求实BBS站]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店