深度浅析种类模式Linux shell编程

运维 系统运维
Bourne shell在Linux shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux shell操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展。

在向大家详细介绍Linux shell之前,首先让大家了解下shell,然后全面介绍Linux shell,希望对大家有用。Linux shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。三种shell各有优缺点。Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。

Linux shell种类

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

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

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

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

用户在登录到Linux shell时由/etc/passwd文件来决定要使用哪个Linux shell。例如:
# fgrep lisa /etc/passwd
lisa:x:500:500:TurboLinux User:/home/lisa:/bin/bash
shell被列每行的末尾(/bin/bash)。
由于Bash是Linux shell上缺省的shell,本章主要介绍Bash及其相关知识。

Linux shell命令

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

CST 1999

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

选项和参数

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

ls motd passwd

这是没有选项的ls命令,可列出当前目录中所有文件,只列出各个文件的名字,而不显示其他更多的信息。
$ ls -l total 2 -rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd -rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
加入-l选项,将会为每个文件列出一行信息,诸如数据大小和数据***被修改的时间。大多数命令都被设计为可以接纳参数。参数是在命令行中的选项之后键入的一个或多个单词,例如:
$ ls -l text -rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd -rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd

将显示text目录下的所有文件及其信息。 有些命令,如ls可以带参数,而有一些命令可能需要一些最小数目的参数。例如,cp命令至少需要两个参数,如果参数的数目与命令要求不符,Linux shell将会给出出错信息。例如:
$ cp -i mydata newdata 注意:命令行中选项先于参数输入。

Linux shell命令行特征

命令行实际上是可以编辑的一个文本缓冲区,在按回车之前,可以对输入的文本进行编辑。比如利用BACKSPACE键可以删除刚键入的字符,可以进行整行删除,还可以插入字符,使得用户在输入命令,尤其是复杂命令时,若出现键入错误,无须重新输入整个命令,只要利用编辑操作,即可改正错误。利用上箭头可以重新显示刚执行的命令,利用这一功能可以重复执行以前执行过的命令,而无须重新键入该命令。
bash保存着以前键入过的命令的列表,这一列表被称为命令历史表。按动上箭头,便可以在命令行上逐次显示各条命令。同样,按动下箭头可以在命令列表中向下移动,这样可以将以前的各条命令显示在命令行上,用户可以修改并执行这些命令。这一特征将在10.4节中进行详细的论述。

在一个命令行中还可以置入多个命令,用分号将各个命令隔开。例如:
$ ls -F;cp -i mydata newdata
也可以在几个命令行中输入一个命令,用反斜杠将一个命令行持续到下一行。
$ cp –i
mydata
newdata
上面的cp命令是在三行中输入的,开始的两行以反斜杠结束,把三行作为一个命令行。
以上介绍Linux shell文件各种种类。

【编辑推荐】

  1. 全面分析讨论Linux Shell编程
  2. 简要介绍Linux shell命令的收集编程语言
  3. 为你解释Linux shell
  4. 教会你Linux Shell自动交互的三种方法
  5. 改变linux shell的输出效果
责任编辑:佚名 来源: CSDN
相关推荐

2009-08-20 17:30:56

C#异步编程模式

2009-12-25 09:55:18

LinuxShell编程Shell基本语法

2011-12-26 15:58:01

枚举

2010-04-16 14:39:54

ORACLE锁

2009-08-20 17:47:54

C#异步编程模式

2009-12-18 09:54:10

Linux Shell

2021-05-28 11:47:43

Linux运维Linux系统

2009-10-23 13:24:20

linux Shell

2009-12-25 09:49:32

LinuxShell编程运行Shell程序

2009-09-14 15:12:30

XML节点类型

2010-06-23 16:05:36

Linux Bash

2009-12-01 09:17:18

linuxshell编程if语句内

2011-09-27 13:52:41

2009-06-29 17:39:31

JSP设计模式

2010-09-28 14:12:50

Javascript

2009-12-25 15:07:44

Linux shell

2010-06-23 15:55:36

Linux Bash

2009-12-25 09:47:05

LinuxShell编程bash

2009-07-24 11:35:08

2022-06-27 11:09:06

边缘计算
点赞
收藏

51CTO技术栈公众号