shell(計算機殼層)

shell(計算機殼層)

本詞條是多義詞,共3個義項
更多義項 ▼ 收起列表 ▲

計算機科學中,Shell俗稱殼(用來區別於核),是指“為使用者提供操作界面”的軟體(command interpreter,命令解析器)。它類似於DOS下的COMMAND.COM和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程式

基本介紹

  • 中文名:殼
  • 外文名:shell
  • 性質:命令解析器
  • 用途:接收用戶命令
術語,Shell的分類,互動式shell和非互動式shell,Unix shell的類型,Windows Powershell,常用命令,用途,描述,示例,檔案,Visual Basic語句,含義,語法,說明,函式示例,

術語

同時它又是一種程式設計語言。作為命令語言,它互動式解釋和執行用戶輸入的命令或者自動地解釋和執行預先設定好的一連串的命令;作為程式設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。
shell
Windows 7中包含的Powershell
排序算法中,Shell是希爾排序的名稱。

Shell的分類

基本上shell分兩大類:
一:圖形界面shell
(Graphical User Interface shell 即 GUI shell)
例如:套用最為廣泛的Windows Explorer(微軟的Windows系列作業系統),還有也包括廣為人知的Linux shell,其中Linux shell包括X Window Manager(BlackBox和FluxBox),以及功能更強大的CDEGNOMEKDEXfce
二:命令行式shell
(Command Line Interface shell ,即CLI shell)
例如:
shBourne Shell)/csh/tcsh/bash/ksh/zsh/fish等(Unix及類unix
COMMAND.COM(CP/M系統;MS-DOSPC-DOSDR-DOSFreeDOSDOSWindows 9x
Windows PowerShell(支持.NET Framework技術的Windows NT)
GCOS Command Language (GCL)(Honeywell GCOS)
MULTICS Command Language(MULTICS)
DIGITAL Command Language(DCL)(OpenVMS
RDOS/DOS Command Line Interpreter
傳統意義上的shell指的是命令行式的shell,以後如果不特別註明,shell是指命令行式的shell。
文字作業系統與外部最主要的接口就叫做shell。shell是作業系統最外面的一層。shell管理與作業系統之間的互動:等待你輸入,向作業系統解釋你的輸入,並且處理各種各樣的作業系統的輸出結果。
shell提供了你與作業系統之間通訊的方式。這種通訊可以以互動方式(從鍵盤輸入,並且可以立即得到回響),或者以shell script(非互動)方式執行。shell script是放在檔案中的一串shell和作業系統命令,它們可以被重複使用。本質上,shell script是命令行命令簡單的組合到一個檔案裡面。
Shell基本上是一個命令解釋器,類似於DOS下的COMMAND.COM。它接收用戶輸入的命令(如ls等),然後調用相應的應用程式。較為通用的shell有標準的Bourne shell和C Shell

互動式shell和非互動式shell

互動式模式就是shell等待用戶的輸入,並且執行用戶提交的命令。這種模式被稱作互動式是因為shell與用戶進行互動。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當用戶簽退後,shell也終止了。
shell也可以運行在另外一種模式:非互動式模式。在這種模式下,shell不與用戶進行互動,而是讀取存放在檔案中的命令,並且執行它們。當它讀到檔案的結尾,shell也就終止了。

Unix shell的類型

在UNIX中主要有:
Bourne shell(sh)
Bourne Again shell(bash
POSIX shell(sh)
C shell(csh
TENEX/TOPS C shell(tcsh)
Bourne Shell(sh)
首個重要的標準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(csh)
Bill Joy於20世紀80年代早期,在加利福尼亞大學伯克利分校開發了csh。它主要是為了讓用戶更容易地使用互動式功能,並把ALGOL風格的語法結構變成了C語言風格。它新增了命令歷史、別名、檔案名稱替換、作業控制等功能。
Korn Shell(ksh)
有很長一段時間,只有兩類shell供人們選擇——Bourne shell用來編程,csh用來互動。為了改變這種狀況,AT&T貝爾實驗室的David Korn開發了ksh。ksh結合了所有的C shell的互動式特性,並融入了Bourne shell的語法。因此,ksh廣受用戶的歡迎。它還新增了數學計算,進程協作(coprocess)、行內編輯(inline editing)等功能。ksh是一個互動式的命令解釋器和命令程式語言。它符合POSIX——一個作業系統的國際標準。POSIX不是一個作業系統,而是一個目標在於應用程式的移植性的標準——在源程式一級跨越多種平台。
Bourne Again Shell(bash)
bash是GNU計畫的一部分,用來替代Bourne shell。它用於基於GNU的系統如Linux。大多數的Linux(Red HatSlackware、Caldera)都以bash作為預設的shell,並且運行sh時,其實調用的是bash。
POSIX Shell(sh)
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

Windows PowerShell是一種新的互動式的命令行和基於任務腳本編寫技術,它使信息技術(IT)管理員能夠全面地自動操作和控制系統管理任務,從而提高了管理員的生產力。Windows PowerShell包括多個系統管理實用工具、一致的語法和命名慣例、及對普通管理數據更好地導航,如登記、證書存儲或Windows Management Instrumentation(WMI)。Windows PowerShell還專門針對IT管理,提供直觀的腳本編寫語言。
Shell也是一個VB函式,它的作用是運行程式,語法是Shell(命令字元串[,視窗類型])

常用命令

常用命令
命令
備註
適用於的命令解釋程式
cat [檔案名稱]
輸出檔案內容到基本輸出(螢幕 or 加>fileName 到另一個檔案)
cb
格式化原始碼
Unix、類unix
改變檔案的許可權
Unix、類unix
複製檔案
MULTICS、Unix、類unix、Haiku作業系統
當前的時間和日期
Unix、類unix、Haiku作業系統
echo $abc
在變數賦值之後,只需在變數前面加一個$去引用。
Unix、類unix、Haiku作業系統、Windows Powershell
語法檢查程式
Unix、類unix、Haiku作業系統
列出檔案目錄
MULTICS、Unix、類unix、Haiku作業系統、Windows Powershell
dir
列出檔案目錄
man
查詢命令
Unix、類unix、Haiku作業系統
查看文本檔案內容
Unix、類unix、Haiku作業系統
查看磁碟空間狀況
Unix、類unix、Haiku作業系統
查看當前作業系統名稱或版本號
Unix、類unix
你的用戶名和終端類型 定義變數 name
Unix、類unix
查看當前進程狀況
=abc? (bash/pdksh) || set name = abc (tcsh)
Unix、類unix、Haiku作業系統
檔案名稱/移動檔案
Unix、類unix、Haiku作業系統
顯示目錄路徑命令
Unix、類unix
exit
Unix、類unix
登出
Unix、類unix(FreeBSD作業系統中僅適用於root用戶)
刪除檔案
Unix、類Unix、Haiku作業系統
echo [文本]
顯示指定文本
Unix、類unix、Haiku作業系統、DOSOS/2WindowsReact OSWindows NT cmd.exe中,[文本]不能為on或off)
help [命令]
列出一個命令的詳細信息
Cygwin、Windows NT
關機
Unix、類unix、Windows NT、React OS
更改工作目錄
Unix、類unix、Haiku作業系統、OS/2、Windows、React OS;DOS從2.0版起
更改工作目錄
Unix、類unix、Haiku作業系統、OS/2、Windows、React OS;DOS從2.0版起
刪除目錄
Unix、類unix、Haiku作業系統
創建目錄
Unix、類unix、Haiku作業系統、OS/2、Windows、React OS;DOS從2.0版起
複製檔案
DOS、OS/2、Windows、React OS
列出目錄
OpenVMS、DOS、OS/2、Windows、React OS
列出命令
CP/M、DR-DOS、OS/2、Windows、React OS
顯示文本檔案的內容
DOS、OS/2、Windows、React OS、RDOS/DOS
VER
查看當前作業系統名稱或版本號
DOS、OS/2、Windows 9x、Windows NT cmd.exe、React OS
刪除目錄
OS/2、Windows、React OS;DOS從2.x版起
創建目錄
OS/2、Windows、React OS;DOS從2.x版起
刪除目錄
OS/2、Windows、React OS;DOS從2.x版起
刪除目錄
刪除檔案
DOS、OS/2、Windows、React OS
改資料夾名(Windows NT);改檔案名稱
DOS、OS/2、Windows、React OS
改資料夾名(Windows NT);改檔案名稱
DOS、OS/2、Windows、React OS
EXIT
關閉當前cmd.exe視窗
Windows NT、React OS
更改日期
DOS、OS/2、Windows、React OS
移動檔案
DOS、OS/2、Windows、React OS
更改時分秒
DOS、OS/2、Windows、React OS
更改提示符
DOS、OS/2、Windows 9x、Windows NT cmd.exe、React OS
格式化一個分區
DOS、OS/2、Windows、React OS
創建並編輯一份純文本檔案回車按Ctrl+Z結束編輯)
DOS、OS/2、Windows 9x、Windows NT cmd.exe、React OS
ECHO ON
顯示提示符
Windows NT cmd.exe
ECHO OFF
不顯示提示符
Windows NT cmd.exe

用途

使用用戶的預設憑證和環境執行shell。
UEFI環境下,EFI的shell環境提供了一組豐富的擴展和增強的命令,在以後的計算機中,傳統的DOS界面將會被shell環境所取代,所有的.exe檔案將不會在以後支持shell的環境中出現,取而代之的檔案後綴是.efi。在shell環境下,分為IA-32x64,32位的*.efi檔案不能在x64的計算機中運行。

描述

shell命令重新初始化用戶的登錄會話。當給出該命令時,就會重新設定進程的控制終端的連線埠特徵,並取消對連線埠的所有訪問。然後 shell 命令為用戶把進程憑證和環境重新設定為預設值,並執行用戶的初始程式。根據調用進程的登錄用戶標識建立所有的憑證和環境。
如果在可信路徑上調用shell命令,並且/etc/security/user檔案中用戶的path屬性沒有always值,那么就不維護終端的可信環境。
註:shell命令不會重新設定用戶的登錄標識。
安全性
訪問控制:該命令應該被 setuidroot 用戶,以重新設定用戶的進程憑證、授權執行(x)訪問所有用戶。該命令應該具有可信計算庫屬性。
檔案訪問:
方式 檔案
r /etc/passwdr /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 定義每個用戶的進程資源限制
由Donald Lewis Shell於1959年提出,它屬於插入排序方法,是不穩定的排序方法。
示例如下:
//希爾排序兄弟們
#include "iostream.h"
#include <process.h>
//using namespace std;//使用命名空間時,要將頭檔案中的.h去掉
#define N 50
void 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");
}
這段代碼在Visual C++ 6.0下編譯通過

Visual Basic語句

含義

執行一個執行檔,返回一個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.log
sleep10
date>>/tmp/data.log

相關詞條

熱門詞條

聯絡我們