Linux园地

Linux园地─Shell 的概念

标签:

众所周知﹐在Linux 的世界中﹐使用文字介面﹐也就是指令列来操作系统是相当重要且不可或缺的。那么当使用者在终端机模式的视窗输入一个命令后﹐它是如何被处理的呢?电脑硬体本身只能看懂0 与1 的机器码﹐因此它无法了解使用者所输入的命令。同样的﹐使用者也不可能直接输入0 与1 的机器码。所以一个电脑系统﹐在使用者与电脑硬体之间﹐需要软体界面来做翻译的工作。

而Shell 就是最上层的软体界面﹐它负责解读使用者所输入的命令﹐并将解读的信息传达下去。然而﹐经由Shell 传达的信息﹐电脑硬体仍然无法了解﹐因此需要另一低阶的软体界面 — Kernel﹐ 将Shell 传来的信息翻译成电脑硬体能懂的机器码﹐最后正确执行使用者的命令。

所以Shell 和 Kernel 是在电脑系统中不同阶层的界面软体﹐它们的关系﹐可以图一来表示︰

图一

在不同的作业系统中﹐有不同种类的Shell。还记得过去的MS DOS 作业系统吗?它的Shell 就是command.com。而在UNIX 及 Linux 作业系统中﹐可同时存在各种不同种类的 Shell ﹐最普遍的有Borune Shell(sh)﹑C Shell(csh) 及 Korn Shell (ksh) 等。它们各有特色﹐但其基本主要功能是类似的。而Bourne Again Shell (bash)﹐是Bourne Shell 的延伸﹐它拥有许多Borune Shell 所没有的或是加强的功能及额外特点﹐bash 同时包含了许多C Shell 及 Korn Shell 的最佳特点。bash 也是Linux 的预设Shell。

Shell 的基本命令可分为内建命令及命令列程式两种﹐以bash 为例﹐可以内建命令’type’ 来分别﹐ 如︰

图二

由上图可知﹐’type’ 本身﹑ ‘pwd’ 和 ‘cd’ 等都是内建命﹐而 ‘ls’﹑ ‘cp’ ﹑’mkdir’ ﹑’rm’ 及’cat’ 则是命令列程式。在执行内建命时﹐由于可直接执行﹐而不需在搜寻路径中寻找﹐所以速度较快。命令列程式通常是独立的程式执行档﹐在搜寻路径中寻找到后﹐才能执行。上图中的 ‘ls’﹑ ‘cp’ ﹑’mkdir’ ﹑’rm’ 及’cat’ 都在/usr/bin 的目录内。

Shell 除了可以执行单一的命令之外﹐还能将一系列要下达的命令编写成一个或多数个档案﹐这些Shell 的程式档就是所谓的Shell Scripts。Shell 可提供变数﹑流程控制﹑及涵式等功能﹐因此Shell 不但是命令的解读者﹐同时还是一个高阶程式语言﹐它的功能强大﹐可自动处理重复性的工作﹐在系统管理﹑软体发展及测试等方面的应用非常广泛且重要。@

大纪元版权所有,转载请注明出处。(http://www.dajiyuan.com)

相关新闻
微软、LINUX和UNIX有十大漏洞易受攻击
未来是Linux的世界吗?
Linux促进会吁政府推动双作业系统
Linux核心程式发现遭人置入病毒
如果您有新闻线索或资料给大纪元,请进入安全投稿爆料平台
评论