什么是shell编程,计算机上的“shell”是什么?
什么是shell编程,计算机上的“shell”是什么?详细介绍
本文目录一览: 请问shell编程是什么?请高手指点
shell是一个命令处理器(commandprocessor)——是一个读入并解释你输入的命令的程序。除了是一个命令中断器以外,shell还是一个程序设计语言。你可以编写shell可以解释的程序(被称为源程序),这些源程序可以包含shell程序设计命令等等。shell除了解释命令以外,还有其他工作,它也可以配置和编程。shell拥有自己的语言允许用户编写程序并以一种复杂方式运行。shell编程语言具有许多常用的编程语言的特征,例如:循环和控制结构等。用户可以生成像其他应用程序一样复杂的shell程序。
补充说明:简单的说:shell是一个交互性命令解释器。shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell。shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行。
以下是shell功能的一个汇总:
查找命令的位置并且执行相关联的程序。
为shell变量赋新值
执行命令替代
处理I/O重定向和管道功能
提供一个解释性的编程语言界面,包括tests、branches和loops等语句
shell语言是什么啊?
什么是shell
shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。
什么是shell
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/linux 操作系统之核心
程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者
间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分
配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因
为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command) 或
是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,
然后执行它。
各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文
件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的
command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、
Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh)
等其它的 shell。UNIX/linux将 shell 独立于核心程序之外, 使得它就如同一般的应用
程序, 可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。
有一些命令,比如改变工作目录命令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指的是Linux/Unix系统下的Shell脚本语言。它有不同的版本,比如sh, bash, ksh, csh, tcsh. 最常用的是Bash.
它是一种交互语言,也就是用户输入一条命令,它就运行一条; 也可以用shell的语法结构将多行的命令放到一个文件中,这个文件被称为Shell脚本。我们可以运行这个Shell脚本从而完成你想要的工作。
linux、unix里的脚本语言,类似你在windows下cmd里的命令。
一种脚本语言...
SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称。
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。
扩展资料:
shell的语言的运行场景:
Shell是各个UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。同时,它运行于高于系统内核的环境,能够简单地执行一些文件系统级的高级操作。因此,之所以要使用Shell脚本是基于:
1、简单性:Shell是一个高级语言,处于内核外层环境;通过它,你可以简洁地表达复杂的操作。
2、可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
3、开发容易:可以在短时间内完成一个功能强大又适用的脚本。
参考资料来源:百度百科-SHELL语言
shell是什么意思?
Shell可以理解为介于用户和操作系统核心之间的解释器,负责将用户输入的指令解析后交由操作系统核心去执行处理。
Shell脚本就是一条或多条命令,通过特定的逻辑结构组合起来,去完成复杂的管理任务,类似于Windows系统的bat脚本。
摘自鸟哥的笔记:
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Linux提供了像Microsoft Windows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。现在比较流行的桌面环境系统是KDE和GNOME。
每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。
同Linux本身一样,Shell也有多种不同的版本。目前主要有下列版本的Shell: Bourne Shell:是贝尔实验室开发的。
BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。
Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。 C Shell:是SUN公司Shell的BSD版本。
计算机上的“shell”是什么?
壳层(英语:Shell)在计算机科学中,是指“提供用户使用界面”的软件,通常指的是命令行界面的解析器。
首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
是指提供使用者使用界面的软件(命令解析器)。
1.它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
2.作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令,作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构。
3.文字操作系统与外部最主要的接口就叫做shell。是操作系统最外面的一层。
4.等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应)。
计算机上的shell是壳(用来区别于核)的意思,是指“提供使用者使用界面”的软件(命令解析器)。
它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。在排序算法中,Shell是希尔排序的名称。
文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
什么是shell
Shell读法英[?el]
Shell俗称壳,它提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行
Shell实际上是一个命令解释器,它通过解释用户输入的命令并把它传输给系统内核去执行。
Shell有自己的编程语言,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等。
内部命令:在系统启动时就调入内存,是常驻内存的,所以执行效率高
外部命令:是系统软件的功能,用户需要时才从硬盘中读入内存
扩展资料
shell的近义词:bullet
词汇搭配:
1、behitbybullet中弹
2、ahailofbullets一阵弹雨
3、avolleyofbullets许多子弹一起发射
词义辨析:
bullet,shell这两个名词均与枪弹有关。
1、bullet含义广泛,指各种枪用的子弹。
2、shell指发射后会爆炸的炮弹。
示例:Abulletwhizzedpastmyear.一颗子弹嗖的一声从我耳边飞过。
shell脚本是什么?
当执行命令或程序语句是通过程序文件而不是命令行,那这个程序被称为Shell脚本。如果Shell脚本内置很多命令、语句及循环控制,然后一次性执行完毕,这种通过文件执行脚本的方式称为非交互方式。用户可以在Shell脚本中输入一系列命令及命令语句组合。这些命令、变量和流程控制语句等有机地结合在一起,就形成一个功能强大的Shell脚本。
什么是shell
什么是shell介绍你可以做许多事情而不必知道它们实际上如何运作。比如,你不必懂得发动机燃烧的物理原理就可以开汽车。缺乏电子知识也不会阻止你用CD机听音乐。不知道什么是Shell和它的工作原理,你还是可以使用UNIX。但是,知道这些你可以更好地利用UNIX。一个UNIX系统有三种具有代表性的Shell可用:Bourneshell,Korn
shell,C
shells。它们会在11,12,13章讨论。在这一章中,你会学到:什么是ShellShell可以为你做什么Shell和整个系统的关系内核与Shell坚果的壳保护其内部的核,同样一个UNIXshell提供一个外设的保护层。当你启动一台基于UNIX的计算机时,UNIX的程序被调入计算机的内存里,直到你关机。这个程序叫做内核(kernel),它执行许多底级和系统级的工作。内核有责任解释基本指令并将其送到处理器。内核也负责运行和调度进程,以及执行所有的输入输出。内核是UNIX系统的心脏,内核有且只有一个。你也许对内核职责的关键性有点迷惑,而内核指令同样的复杂和高技术性。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。这一节剩下的部分解释这个外层是如何建立的。一旦内核调入内存,他就准备执行用户的请求。然而,用户首先得连接登录,然后发出请求。不管怎样,用户登录,内核必须知道用户是谁以及如何与他通话。为了做到这点,内核调用两个特殊的程序,getty和login.对应每个用户的登录点--通常称为一个tty--内核调用getty程序。这个过程被称为spawning(spawn原意是产卵)。getty显示一个登录提示,接着不断地监视通话点等待用户名的输入。当getty取得任何输入时,它便调用login程序。login建立用户的身份并验证他登录的权利。login程序检查password(密码)文件。如果用户输入的密码不正确,控制将从登录点返回到getty。如果正确,login调用password文件里用户条目中所记录的程序并将控制交给它。这个程序也许是一个字处理软件或者是电子表格程序,不过一般是被称为shell的程序。假设有四个用户已经登录进系统。这四个用户中,有两个正使用Bourne
shell,一个使用Kornshell,还有一个使用电子表格程序。每一个用户都得到一份shell的拷贝以服务它的请求,但是内核只有一个。使用shell不会阻碍用户使用电子表格或别的程序,但那些程序是运行在活动的shell下的。shell是一个单一用户专用的程序,它在用户和UNIX内核之间提供了一个界面。你不必一定要使用shell来存取UNIX。上面的例子中,有个用户使用电子表格取代了shell。当这个用户登录进来时,电子表格程序启动。当它退出电子表格程序时,他也就退出了系统。当强调安全性或者希望将用户与任何UNIX的界面屏蔽开时,这个技术挺有用。缺点是用户不能使用mail或其他UNIX的功能。因为login后可以执行任何程序--shell只是简单的一个程序--你就有可能编写自己的shell。事实上,三个独立开发的shell已经成为UNIX标准的一部分。它们是:Bourne
shell,由Stephen
Bourne开发Korn
shell,由David
Korn开发C
shell,由Bill
Joy开发shell的多样性使你可以选择最适合你或者你感到最亲近的界面。shell的功能不过你选择哪个标准的shell并没有多大关系,因为三个shell都有相同的目的:在UNIX下为用户提供一个界面。为了达到这个目标,三个shell都提供了相同的基本功能:命令行解释功能启动程序输入输出重定向管道连接文件名置换变量维护环境控制shell编程命令行解释当你登录进来,启动一个交互式的shell时,你会看到一个shell提示,通常是$,%或者#符号的形式。当你在提示符下敲进一行字符后,shell就试图解释它。shell提示符下的输入有时被称为一个命令行。命令行的基本格式是command
arguments命令名
参数(一个或多个))command(命令)是可执行的UNIX命令,程序,实用工具,或shell程序。arguments(参数)被传递给执行程序。大多数的UNIX实用程序要求参数有以下的格式:option
filenames选项
文件名(一个或多个))举个例子,在命令行下有$
ls
-lfile1
file2在这个命令行中有三个参数传递给ls,第一个是个选项,剩下的两个是文件名。shell为内核所做的事情之一是减少不需要的信息。对于计算机,空白(whit-espace)是一类无用信息;因此,有必要知道shell在遇到空白时做了些什么。空白由空格,水平制表符和换行符组成。考虑这个例子:$
echo
part
A
part
B
part
Cpart
A
part
B
part
C这儿将命令行解释为有六个参数的echo命令并删除了参数之间的空白。假设如果你正在打印报告头想保留空白,你就得用引号将数据括起来就象下面所示:$echo
part
A
part
B
part
Cpart
A
part
B
part
C单引号阻止shell检查引号里面。现在shell将这一行解释为带一个参数的echo命令,而这个参数正好是包含空白的字符串。启动程序当shell解释完命令行后,它就启动命令行中要求的程序。实际是内核执行这个程序。为了启动程序执行,shell在PATH环境变量指定的目录中搜索可执行文件。当它找到这个文件,就启动一个子shell来运行程序。你应该知道子shell不必影响它父亲的环境设置而建立和操纵自己的环境。比如一个子shell可以改变它的工作目录,当它运行完后,其父shell的工作目录仍保持不变。输入输出重定向shell在执行程序前进行重定向。考虑下面两个例子,其中使用wc单词统计工具统计有五行的数据文件:$wc
-l
fivelines5
fivelines$wc
-l
5这里有一点微小的差异。在第一个例子中,wc知道它应该出去寻找名为fivelines的文件并对其进行操作。因为wc知道文件名,所以它将其显示给用户。在第二个例子中,wc仅看到数据而不知道这些数据从那里来,因为shell做了定位和重定向数据到wc的工作,也因此wc无法显示文件名。管道连接 管道是输入输出重定向的特例,它将一个命令的输出直接连到另一个命令的输入,因此管道也是在调用程序前建立的。考虑下面的命令行:$who|wc
-l5shell没将who的输出显示到屏幕上,而是定向到wc的输入。文件名置换shell有责任进行文件名的替换。shell在执行程序前做替换。举个例子:$echo*file1
file2
file3
file3x
file4这儿,星号被扩展为五个文件名,并被传递给echo作为五个参数。如果你想显示一个星号,你应该用引号将它括起来。变量维护shell有能力进行变量维护。变量是存储数据为将来所用的场所。用等号(=)可以给变量赋值。$LOOKUP=/usr/mydir在这里,shell建立一个LOOKUP变量,并将/usr/mydir赋给它。稍后,你可以在命令行上通过在变量名之前加$符号来使用变量值。考虑这些例子:$echo
$LOOKUP/usr/mydir$echo
LOOKUPLOOKUPC-shell的用户应该注意:C-shell中的赋值不同于Bourne和Kornshell。C-shell使用set命令进行赋值。$set
LOOKUP
=/usr/mydir注意在等号两边要加空格。就象文件名的置换一样,变量名的置换也是在调用程序前进行。第二个例子省略了$符号。因此,shell只是简单地将字符串传递给echo作参数。在变量替换中,变量的值取代了变量名。例如在:$ls
$LOOKUP/filename用/usr/mydir/filename做参数调用ls。 环境控制当login程序调用你的shell时,shell对你的环境进行设置,其中包括你的home(家)目录,你使用的终端类型以及用来搜索可执行文件的路径。环境被存储在环境变量中。举个例子,要改变终端类型,你需要改变TERM变量中的值,就象下面所示的:$echo
$TERMvt
100$TERM=ansi$echo
$TERMansi注意在C-shell中,给环境变量赋值使用setenv命令。%setenv
TERMvt100shell编程你已经看到shell可以用来解释命令行,维护变量,执行程序。另外shell还是一种编程语言。通过使用流程控制和条件判断来组合命令与变量赋值,你就拥有了一个有力的编程工具。使用shell作为一门编程语言,你可以使重复的任务自动化,写报告,甚至你可以建立和操纵自己的数据文件。
操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有两大类shell
Bourne shell (包括 sh, ksh, and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
最初的UNIX shell是由Stephen R. Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourne shell。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat, Slackware, Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的shell:
AIX 下是Korn Shell.
Solaris和FreeBSD缺省的是Bourne shell.
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.
【TIP】
#!/usr/bin/sh的用途
shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。
附:LINUX系统的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
$
可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。
七十三、什么是数据包
“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。有人说,局域网中传输的不是“帧”(Frame)吗?没错,但是TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。
名词解释:OSI(Open System Interconnection,开放系统互联)模型是由国际标准化组织(ISO)定义的标准,它定义了一种分层体系结构,在其中的每一层定义了针对不同通信级别的协议。OSI模型有7层,17层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI模型在逻辑上可分为两个部分:低层的14层关注的是原始数据的传输;高层的57层关注的是网络下的应用程序。
我们可以用一个形象一些的例子对数据包的概念加以说明:我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是不行的。必须把内装产品的包装盒放到一个邮局指定的专用纸箱里,这样才能够邮寄。这里,产品包装盒相当于数据包,里面放着的产品相当于可用的数据,而专用纸箱就相当于帧,且一个帧中只有一个数据包。
“包”听起来非常抽象,那么是不是不可见的呢?通过一定技术手段,是可以感知到数据包的存在的。比如在Windows 2000 Server中,把鼠标移动到任务栏右下角的网卡图标上(网卡需要接好双绞线、连入网络),就可以看到“发送:××包,收到:××包”的提示。通过数据包捕获软件,也可以将数据包捕获并加以分析。
就是用数据包捕获软件Iris捕获到的数据包的界面图,在此,大家可以很清楚地看到捕获到的数据包的MAC地址、IP地址、协议类型端口号等细节。通过分析这些数据,网管员就可以知道网络中到底有什么样的数据包在活动了。
附:数据包的结构
数据包的结构非常复杂,不是三言两语能够说清的,在这里我们主要了解一下它的关键构成就可以了,这对于理解TCP/IP协议的通信原理是非常重要的。数据包主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成。
数据包的结构与我们平常写信非常类似,目的IP地址是说明这个数据包是要发给谁的,相当于收信人地址;源IP地址是说明这个数据包是发自哪里的,相当于发信人地址;而净载数据相当于信件的内容。
正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。理解数据包,对于网络管理的网络安全具有至关重要的意义。
名词 n.
1.壳,果壳;荚[C][U]
Peanuts have shells.
花生有壳。
2.贝壳,甲[C][U]
The seashore was covered with shells.
海滩上到处是贝壳。
3.壳状物;外壳;套,罩[C]
4.有甲壳的软体动物[C]
5.缄默;冷淡,矜持[C]
6.锥形小啤酒杯[C]
7.(计划等的)梗概,轮廓[C]
8.炮弹;猎枪子弹;弹壳[C]
9.轻快的赛艇[C]
10.(房屋的)骨架[C]
The building was burned to a shell.
大楼被烧得只剩下空骨架。
11.(人的)躯壳[C]
The despair left him a mere shell of a man.
他陷入绝望,形同躯壳。
12.地壳;薄硬岩层[C]
13.【电脑】壳,UNIX操作系统中的一部分,是使用者与系统的界面
及物动词 vt.
1.剥...的壳;剥
She is shelling peas.
她在剥豌豆。
2.为(麦穗等)去壳
3.用贝壳铺;给...装壳体
4.炮轰;射击
The town was shelled last night.
昨晚该镇遭到炮击。
不及物动词 vi.
1.(种子等)脱壳
2.(金属等)剥落,成碎片落下[(+off)]
Shell指命令解释器。它的功能是解释执行用户输入的命令和程序,用户每输入一条命令,Shell就解释执行一条。这种从键盘上一输入命令就能立即得到响应的对话模式称为交互模式。
Shell俗称壳,它提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行
Shell实际上是一个命令解释器,它通过解释用户输入的命令并把它传输给系统内核去执行。
Shell有自己的编程语言,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等。
内部命令:在系统启动时就调入内存,是常驻内存的,所以执行效率高
外部命令:是系统软件的功能,用户需要时才从硬盘中读入内存
如何区分内外部命令?
使用type命令 ,语法 : type 要检测的命令
[root@xuegod63 ~]# type cat
cat 是 /usr/bin/cat
[root@xuegod63 ~]# type pwd
pwd 是 shell 内建
总结: 通过SHELL,我们可以对LINUX实现哪些操作或管理:
例如:
对文件的管理(创建、删除、复制、修改)
1、对用户的管理(添加、删除)
2、相关权限的管理(授权用户对相关文件的管理,比如增删改查)
3、对磁盘的管理(分区、raid、lvm)
4、对软件的管理
5、对网络的管理
shell是什么
shell 英文是壳的意思。
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
在排序算法中,Shell是希尔排序的名称。
[1]基本上shell分两大类:
一:图形界面shell(Graphical User Interface shell 即 GUI shell)
例如:应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manger (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
二:命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh(Unix/linux 系统)
(MS-DOS系统)
cmd.exe/ 命令提示字符(Windows NT 系统)
Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)
传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。
文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有两大类shell
Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的shell:
AIX下是Korn Shell.
Solaris缺省的是Bourne shell.
FreeBSD缺省的是C shell
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.
Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。
Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])
Windows中的Shell编程 Shell指的是什么意思?
内核
操作系统中,与用户直接交互的那一部分就叫 Shell。就是你能看得到的那些元素,像 DOS 中所谓的 SHELL 就是那个命令行,在 Windows 中就是这些图形元素,在 UNIX 中,SHELL 有很多种,可以根据自己的需要更换。