複製鏈接
請複製以下鏈接發送給好友

shell

(計算機殼層)

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

shell術語

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

shellShell的分類

基本上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) [6] 
MULTICS Command Language(MULTICS) [4]  [9] 
DIGITAL Command Language(DCL)(OpenVMS [7-8]  [11] 
RDOS/DOS Command Line Interpreter [5]  [10] 
傳統意義上的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不與用户進行交互,而是讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾,shell也就終止了。

shellUnix 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。

shellWindows Powershell

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

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
who [2] 
你的用户名和終端類型 定義變量 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/2、Windows、React 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
DIR [3] 
列出目錄
OpenVMS、DOS、OS/2、Windows、React OS
列出命令
CP/M、DR-DOS、OS/2、Windows、React OS
顯示文本文件的內容
DOS、OS/2、Windows、React OS、RDOS/DOS [5]  [10] 
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
TYPE

shell用途

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

shell描述

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示例

要在使用可信 shell(tsh)之後將會話重新初始化為缺省憑證和環境,請輸入:
shell

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年提出 [1]  ,它屬於插入排序方法,是不穩定的排序方法。
示例如下:
//希爾排序兄弟們
#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下編譯通過

shellVisual Basic語句

shell含義

執行一個可執行文件,返回一個Variant (Double),如果成功的話,代表這個程序的任務ID,若不成功,則會返回0。

shell語法

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説明

如果Shell函數成功地執行了所要執行的文件,則它會返回程序的任務ID。任務ID是一個數值,用來指明正在運行的程序。如果Shell函數不能打開命名的程序,則會產生錯誤。
注意 缺省情況下,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
參考資料
展開全部 收起