新闻资讯
看你所看,想你所想

shell(计算机壳层)

shell(计算机壳层)

shell(计算机壳层)

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软体(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程式。

基本介绍

  • 中文名:壳
  • 外文名:shell
  • 性质:命令解析器
  • 用途:接收用户命令

术语

同时它又是一种程式设计语言。作为命令语言,它互动式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程式设计语言,它定义了各种变数和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
window7中包含的shellwindow7中包含的shell
在排序算法中,Shell是希尔排序的名称。
基本上shell分两大类:
一:图形界面shell(Graphical User Interface shell 即 GUI shell)
例如:套用最为广泛的 Windows Explorer (微软的windows系列作业系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (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中主要有:
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是1979年底在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年代早期,在伯克利的加利福尼亚大学开发了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(命令字元串[,视窗类型])

shell 命令

常用命令
cat 档案名称 输出档案内容到基本输出(萤幕 or 加>fileName 到另一个档案)
cb 格式化原始码
chmod //change mode,改变档案的许可权
cp copy
date 当前的时间和日期
echo $abc 在变数赋值之后,只需在变数前面加一个$去引用.
lint 语法检查程式
ls dir
man help
more type
du 查看磁碟空间状况
ps 查看当前进程状况
who 你的用户名和终端类型
定义变数 name=abc? (bash/pdksh) || set name = abc (tcsh)
mkdir 创建目录
rmdir 删除目录
cd 进入目录
rm 删除档案
more 显示档案
echo 显示指定文本
mv 改档案名称 /移动档案
pwd 显示目录路径命令

用途

使用用户的预设凭证和环境执行 shell。
在UEFI环境下,EFI的Shell环境提供了一组丰富的扩展和增强的命令,在以后的计算机中,传统的DOS界面将会被SHELL环境所取代,所有的.exe档案将不会在以后支持SHELL的环境中出现,取而代之的档案后缀是.efi。在SHELL环境下,分为IA32和X64,32位的*.efi档案不能在X64的计算机中运行。

描述

shell 命令重新初始化用户的登录会话。当给出该命令时,就会重新设定进程的控制终端的连线埠特徵,并取消对连线埠的所有访问。然后 shell 命令为用户把进程凭证和环境重新设定为预设值,并执行用户的初始程式。根据调用进程的登录用户标识建立所有的凭证和环境。
如果在可信路径上调用 shell 命令,并且 /etc/security/user 档案中用户的 tpath 属性没有 always 值,那幺就不维护终端的可信环境。
注:shell 命令不会重新设定用户的登录标识。
安全性
访问控制:该命令应该被 setuid 为 root 用户,以重新设定用户的进程凭证、授权执行(x)访问所有用户。该命令应该具有可信计算库属性。
档案访问:
方式 档案
r /etc/passwd
r /etc/group
r /etc/security/audit/config
r /etc/security/environ
r /etc/security/limits
r /etc/security/user
审计事件:
事件 信息
USER_Shell portname

示例

要在使用可信 shell(tsh)之后将会话重新初始化为预设凭证和环境,请输入:
shell

档案

/usr/bin/shell 包含 shell 命令。
/etc/security/user 包含用户的扩展属性。
/etc/passwd 包含用户标识。
/etc/group 包含组标识。
/etc/security/audit/config 包含审计配置信息。
/etc/security/environ 定义用户的环境属性。
/etc/security/limits 定义每个用户的进程资源限制。
希尔(Shell)排序
希尔(Shell)排序是D.L.Shell于1959年提出的,他属于插入排序方法,是不稳定的排序方法。
示例如下:
//希尔排序兄弟们#include "iostream.h"#include <process.h>//using namespace std;//使用命名空间时,要将头档案中的.h去掉#define N 50void shell_sort(int a[],int len){    int h,i,j,temp;    for(h=len/2; h>0; h=h/2)//控制增量    {        for(i=h; i<len; i++)//这个for循环就是前面的直接插入排序        {            temp=a[i];            for(j=i-h; (j>=0&&temp<a[j]); j-=h)//循环列印数组的每个元素            {                a[j+h]=a[j];            }            a[j+h]=temp;        }    }}void print_array(int a[], int len){    for(int i=0; i<len; i++)    {        cout<<a[i]<<"";    }    cout<<endl;}void main(){    int a[N];    int b;    int M;    cout<<"请输入要排序的数目"<<endl;    cin>>M;    cout<<"请输入要排序的数"<<endl;    for(int i=0;i<M;i++)    {        cin>>b;        a[i]=b;    }    cout<<"beforeshellsort:";    print_array(a,M);    shell_sort(a,M);//进行shell排序    cout<<"aftershellsort:";    print_array(a,M);    //return0;    system("pause");}
这段代码在VC++ 6.0下编译通过

VB语句

含义

执行一个执行档,返回一个Variant (Double),如果成功的话,代表这个程式的任务 ID,若不成功,则会返回 0。

语法

Shell(pathname[,windowstyle])
Shell 函式的语法含有下面这些命名参数:
部分
描述
pathname
必要参数。Variant (String),要执行的程式名,以及任何必需的参数或命令行变数,可能还包括目录或资料夹,以及驱动器。
Windowstyle
可选参数。Variant (Integer),表示在程式运行时视窗的样式。如果 windowstyle 省略,则程式是以具有焦点的最小化视窗来执行的。
windowstyle 命名参数有以下这些值:
常量
描述
vbHide
0
视窗被隐藏,且焦点会移到隐式视窗。
VbNormalFocus
1
视窗具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus
2
视窗会以一个具有焦点的图示来显示。
VbMaximizedFocus
3
视窗是一个具有焦点的最大化视窗。
VbNormalNoFocus
4
视窗会被还原到最近使用的大小和位置,而当前活动的视窗仍然保持活动。
VbMinimizedNoFocus
6
视窗会以一个图示来显示。而当前活动的的视窗仍然保持活动。

说明

如果Shell 函式成功地执行了所要执行的档案,则它会返回程式的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程式。如果 Shell 函式不能打开命名的程式,则会产生错误。
注意 预设情况下,Shell 函式是以异步方式来执行其它程式的。也就是说,用Shell 启动的程式可能还没有完成执行过程,就已经执行到 Shell 函式之后的语句。

函式示例

示例一:
本示例使用Shell 函式来完成一个用户指定的应用程式。
' 将第二个参数值设成1,可让该程式以正常大小的视窗完成,并且拥有焦点。 Dim RetValRetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' 完成Calculator。
示例二:
使用shell脚本调用linux中当前时间,并记录在log档案中,10秒后再次记录时间。
date>>/tmp/data.logsleep10date>>/tmp/data.log

转载请注明出处海之美文 » shell(计算机壳层)

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com