在電腦科學中,shell俗稱殼(用來區別於核),是指「為使用者提供操作介面」的軟體(命令解析器)。它接收使用者命令,然後呼叫相應的應用程式。
解釋性語言。同時它又是一種程式語言。作為命令語言,它互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設定好的一連串的命令;作為程式語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支。
文字作業系統與外部最主要的介面就叫做shell。shell是作業系統最外面的一層。shell管理你與作業系統之間的互動:等待你輸入,向作業系統解釋你的輸入,並且處理各種各樣的作業系統的輸出結果。
使用者的需求以及指令先經過shell的甄別處理之後,將需求告知核心,由核心調動向相應的硬體以及程式對需求進行響應。
當命令或者程式不在命令列執行,而是通過乙個可執行檔案來實現命令的執行。那麼這個可執行檔案就被稱為shell指令碼。
shell讀取存放在檔案中的命令,並且執行它們。當它讀到檔案的結尾,shell也就終止了,在這種模式下,shell不與你進行互動,這種通過檔案執行命令的方式稱為非互動模式。
優點:用 shell 指令碼儲存執行動作
用指令碼判定命令的執行條件
用指令碼來實現動作的批量執行
系統預設的shell:
bash = gnu bourne-again shell
echo $shell $ 顯示系統正在使用的shell
如果在直接在命令列中 echo $0,則列印的是當前執行的shell名
乙個完整的shell指令碼需要有以下幾個部分:
指令碼檔名稱:一般以.sh 結尾的名稱進行命名,表明檔案型別。
第一行:#!/bin/bash 指定直譯器—由哪個程式來執行指令碼內容。
有使用者判斷,否則任何使用者都可以執行這個指令碼
有流程控制,否則只是把簡單的命令進行順序操作,沒有成功與否的判斷
注釋:可以命令後,也可以自成一行
編寫指令碼的作者以及****
指令碼編寫時間
sh date.sh
bash date.sh
這兩種執行shell指令碼的方式時完全等效的,規定的指令碼執行的環境。系統呼叫的資源以及產生的程序全部一致。
bash date.sh
source date.sh
這兩種執行shell指令碼的方式時完全等效的,規定的指令碼執行的環境。系統呼叫的資源以及產生的程序全部一致。
需要檔案存在執行許可權,可以使用下面兩種方式執行指令碼
chmod +x date.sh
./date.sh
/mnt/date.sh
使用檔名稱的方式指定呼叫指令碼進行執行,一種時相對路徑,一種時絕對路徑,這兩種執行shell指令碼的方式時完全等效的,規定的指令碼執行的環境。系統呼叫的資源以及產生的程序全部一致。
一般shell指令碼要注上以下資訊,作者、版本、郵箱、日期、描述。
並且指令碼使用vim 進行編輯,可以經過設定vim的配置檔案進行快速的生成指令碼固定格式的注釋。
快捷鍵的方式:
vim /etc/vimrc # 編輯vim的配置檔案
將函式的呼叫以及定義寫在檔案最後
map ms:call haha ()'s #設定快捷鍵f5 呼叫函式haha
67 func toto () #自己定義的函式 haha
77 endfunc
vim /etc/vimrc # 編輯vim的配置檔案
autocmd bufnewfile *.sh,*.script exec "call haha ()" #當新建乙個以,sh ,script 結尾的檔案時 自動呼叫函式 haha
69 func haha ()
79 endfunc
end SHELL 基礎知識
1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...