Linux Shell概述
英文shell的本意是“壳”。它形象地说明了shell在Linux系统中的作用。shell就是紧紧包裹在Linux内核外面的一个壳程序。用户让操作系统做的所有任务,都是通过shell与系统内核的交互来完成的。shell所处的地位,就相当于DOS中的command程序,但比command的功能更加强大。
shell是用户与操作系统的内核之间的接口,是系统的用户界面,并且具有相当丰富的功能。利用shell可以编写出代码简捷,但功能很强的脚本文件。
1 了解Shell
Shell是使用Linux系统的基本环境。虽然不使用Shell,通过X Window也能操作Linux,但是,无论如何看待文本环境下的工作,都可以肯定地说,一旦全面体验到纯文本的强大功能,就会被它所折服。文本就是简洁,文本就是速度。管理网络的系统管理员在使用Shell方面是最有经验的。那些被迫在慢速调制解调器连接上使用图形工具的用户很快也会被折服。
Shell提供了用户与操作系统之间通信的方式,可以以交互方式(从键盘输入,并且可以立即
得到响应)执行,也可以以非交互方式(shell script方式)执行。这里的shell script是放在文件中的一串shell和操作系统命令,它们可以重复使用,本质上,shell script是将命令行命令简单地组合到一个文件里面。
此外,shell还可分为交互式shell和非交互式shell。其中,交互式模式是指shell等待用户的输入,并且执行用户提交的命令,由于需要与用户进行交互,因而被称为交互式shell;这种模式也是大多数用户所熟悉的:登录、执行一些命令、退出,当用户退出系统后,shell也就终止了。shell也可以在非交互式模式下运行,在这种模式下,shell不与用户进行交互,而是读取存放在文件中的命令,并且执行它们,当读到文件尾时,shell将终止。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,那么shell就是围绕内核的外层。当从shell或者其他程序向Linux传送命令时,内核就会作出相应的反应。shell作为一个命令语言解释程序,拥有内建的shell命令集;shell也能被系统中其他应用程序调用。用户在提示符后输入的命令都是先由shell解释,然后再传给Linux内核的。
1.2 shell的特点
Linux 系统为用户提供了shell 高级程序设计语言,大大方便了管理人员对系统的维护和普通用户的应用开发,提高了编程效率。shell具有如下特点。
● 对已有命令进行适当组合,构成新的命令,而且组合方式很简单。
● 提供了文件名扩展字符(通配符,如*,?,[]),使得用单一的字符串可以匹配多个文件名,省去了键入一长串文件名的麻烦。
● 可以直接使用shell的内置命令,而不需创建新的进程,如shell 中提供的cd、help、kill、pwd、echo、alias、unalias、bg、fg、exit、export、fc、read、readonly等命令。为防止因某些shell不支持这类命令而出现麻烦,许多命令都提供了对应的二进制代码,从而也可以在新进程中运算。
● 允许灵活地使用数据流,提供通配符、输入输出重定向、管道线等机制,方便了模式匹配、I/O处理及数据传输。
● 结构化的程序模块,提供了顺序流程控制、分支流程控制及循环流程控制等。
● 提供了在后台(&)执行命令的能力。
● 提供了可配置的环境,允许用户创建和修改命令、命令提示符及其他的系统行为。
● 提供一个高级的命令语言,允许用户能创建从简单到复杂的程序。这些shell程序被称为shell脚本。利用shell脚本,可把用户编写的可执行程序与Linux命令结合在一起,可以作为新的命令使用,从而便于用户开发新的命令。
1.3 shell的主要版本
Linux系统提供了多种版本的shell,以供用户根据不同的需要来选择。每种版本shell的基本功能类似,但各版本的shell又都有其各自独特的功能。如果掌握了一种版本的shell,就可以比较轻松地掌握另外一种版本的shell。在Linux系统下默认的shell是bash。在Linux系统中,常见的shell版本有以下几种。
● Bourne shell(sh) 它是UNIX最初使用的shell,并且在每种UNIX上都可以使用。它在shell编程方面相当优秀,但处理与用户的交互方面不如其他几种shell。
● C shell(csh) 它最初由Bill Joy编写,更多地考虑了用户界面的友好性,支持命令补齐等一些Bourne shell所不支持的特性,但其编程接口做得不如Bourne shell。Cshell被很多C
程序员使用,因为C shell的语法和C语言的很相似,故C shell也由此得名。
● Korn shell(ksh) 它集合了C shell和Bourne shell的优点,并且与Bourne shell完全兼容。
● Bourne Again shell(bash) bash是大多数Linux系统的默认shell。它是Bourne shell的扩展,并与Bourne shell完全向后兼容,而且在Bourne shell的基础上增加和增强了很多特性。Bash放在/bin/bash中,它有许多特,可以提供自动补全命令行、命令行编辑及命令历史列表等功能。它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
● Tcsh 它是C shell的一个扩展版本,与csh完全向后兼容,但它包含了更多使用户感觉方便的新特性,其最大的提高是在命令行编辑和历史浏览方面。它不仅与Bash shelll提示符兼容,而且还提供比Bash shell更多的提示符参数。
● Pdksh 它是一个专门为Linux系统编写的Korn shell(ksh)的扩展版本。Ksh是一个商用shell,不能免费提供,而pdksh是免费的。
此外,其他常见的shell还有ash、zsh等。在Red Hat Linux中,系统默认提供给每个用户的shell是bash。
shell代码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论