Linux循序渐进(19)

  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编程方面相当优秀但在处理与用户的交互方面做得不如其他几种shellLinux操作系统缺省的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的人提供了TcshTcsh是C shell的一个扩展版本Tcsh包括命令行编辑可编程单词补全拼写校正历史命令替换作业控制和类似C语言的语法它不仅和Bash shell是提示符兼容而且还提供比Bash shell更多的提示符参数

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

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

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

  # fgrep lisa /etc/passwd   lisa:x:::TurboLinux User:/home/lisa:/bin/bash

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

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

    第二十课 shell命令        命令行

  用户登录到Linux系统时可以看到一个shell提示符标识了命令行的开始用户可以在提示符后面输入任何命令及参数例如

  $ date    :: CST   $

  用户登录时实际进入了shell它遵循一定的语法将输入的命令加以解释并传给系统命令行中输入的第一个字必须是一个命令的名字第二个字是命令的选项或参数命令行中的每个字必须由空格或TAB隔开格式如下

  $ Command Option Arguments

  选项和参数   选项是包括一个或多个字母的代码它前面有一个减号(减号是必要的Linux用它来区别选项和参数)选项可用于改变命令执行的动作的类型例如

  $ ls   motd passwd   $

  这是没有选项的ls命令可列出当前目录中所有文件只列出各个文件的名字而不显示其他更多的信息

  $ ls l   total   rwrr wzh book Apr : motd   rwrr wzh book Apr : passwd   $

  加入l选项将会为每个文件列出一行信息诸如数据大小和数据最后被修改的时间

  大多数命令都被设计为可以接纳参数参数是在命令行中的选项之后键入的一个或多个单词例如

  $ ls l text   rwrr wzh book Apr : motd   rwrr wzh book Apr : passwd   $

  将显示text目录下的所有文件及其信息

  有些命令如ls可以带参数而有一些命令可能需要一些最小数目的参数例如cp命令至少需要两个参数如果参数的数目与命令要求不符shell将会给出出错信息例如

  $ cp i mydata newdata

  注意命令行中选项先于参数输入

  命令行特征   命令行实际上是可以编辑的一个文本缓冲区在按回车之前可以对输入的文本进行编辑比如利用BACKSPACE键可以删除刚键入的字符可以进行整行删除还可以插入字符使得用户在输入命令尤其是复杂命令时若出现键入错误无须重新输入整个命令只要利用编辑操作即可改正错误

  利用上箭头可以重新显示刚执行的命令利用这一功能可以重复执行以前执行过的命令而无须重新键入该命令

  bash保存着以前键入过的命令的列表这一列表被称为命令历史表按动上箭头便可以在命令行上逐次显示各条命令同样按动下箭头可以在命令列表中向下移动这样可以将以前的各条命令显示在命令行上用户可以修改并执行这些命令这一特征将在节中进行详细的论述

  在一个命令行中还可以置入多个命令用分号将各个命令隔开例如

  $ ls F;cp i mydata newdata

  也可以在几个命令行中输入一个命令用反斜杠将一个命令行持续到下一行

  $ cp –i   mydata   newdata

  上面的cp命令是在三行中输入的开始的两行以反斜杠结束把三行作为一个命令行

  shell中的特殊字符

  shell中除使用普通字符外还可以使用一些具有特殊含义和功能的特殊字符在使用它们时应注意其特殊的含义和作用范围下面分别对这些特殊字符加以介绍

  通配符   通配符用于模式匹配如文件名匹配路经名搜索字符串查找等常用的通配符有*?和括在方括号[ ]中的字符序列用户可以在作为命令参数的文件名中包含这些通配符构成一个所谓的模式串在执行过程中进行模式匹配

  * 代表任何字符串(长度可以不等)例如f*匹配以f打头的任意字符串但应注意文件名前的圆点()和路经名中的斜线(/)必须显式 他们的快乐像贪玩的小孩,游荡到天光却还不肯回来。

Linux循序渐进(19)

相关文章:

你感兴趣的文章:

标签云: