shell的种类

Linux中的shell有多种类型,其中最常用的几种是Bourne shellsh)、C shellcsh)和Korn shellksh)。三种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系统提供了pdkshksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。

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

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

  1. # fgrep lisa /etc/passwd
  2. lisa:x:500:500:TurboLinux User:/home/lisa:/bin/bash

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

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

shell命令

命令行c

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

  1. $ date
  2. 二 11 23 01:34:58 CST 1999
  3. $

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

  1. $ Command Option Arguments

1. 选项和参数

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

  1. $ ls
  2. motd passwd
  3. $

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

  1. $ ls -l
  2. total 2
  3. -rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
  4. -rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
  5. $

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

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

  1. $ ls -l text
  2. -rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
  3. -rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
  4. $

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

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

  1.  $ cp -i mydata newdata

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

2. 命令行特征

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

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

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

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

  1.  $ ls -F;cp -i mydata newdata

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

  1. $ cp –i
  2. mydata
  3. newdata

 

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

Linux shell上篇讲解到shell的概念、种类、命令,在下篇我们还会了解到更多的知识。

  • 天外飞仙级别的Linux Shell命令
  • 天外飞仙级别的Linux Shell命令(第二弹)
  • 实战Linux Shell编程与服务器管理
  • 详细介绍Linux shell脚本基础学习一)
  • 全面分析讨论Linux Shell编程
  • Linux shell命令的菜鸟初体验


相关内容