Shell 是用戶訪問 Unix 操縱系統(tǒng)的接口。它接收用戶的輸入,然后基于該輸入執(zhí)行程序。程序執(zhí)行完后,結(jié)果會顯示在顯示器上。
Shell 就是運行指令、程序和 Shell 腳本的運行環(huán)境。就和操作系統(tǒng)可以有很多種類一樣,Shell 也有很多種。每一種 Shell 都有其特定的指令和函數(shù)集。
提示符 $
被稱為命令提示符。當顯示命令提示符后,用戶就可以鍵入命令。
Shell 在用戶按 Enter 鍵后,從用戶輸入設(shè)備讀入輸入信息,它通過查看用戶輸入的第一個單詞,來獲知用戶想要執(zhí)行的命令。一個字即使字符不分割組成的字符串,一般是空格和制表符分割字。
下面是在顯示器上顯示當前日期和時間的 date 指令的例子:
$date
Thu Jun 25 08:30:19 MST 2009
用戶也可以定制自己喜歡的命令提示符,方法是改變環(huán)境變量 PS1。
Unix 系統(tǒng)中有兩種主要的 shell:
$
。%
。Bourne shell 也有如下幾種子分類:
C shell不同的類型如下:
最初的 UNIX Shell 是 Stephen R. Bourne 在 1970 年代中期寫的。當時,他在新澤西的 AT&T 貝爾實驗室工作。
Bourne shell是第一個出現(xiàn)在 Unix 系統(tǒng)中的 shell,因此它被稱為標準的“shell”。
Bourne shell通常是安裝在大多數(shù)版本的 Unix 中的 /bin/sh
目錄。由于這個原因,在不同版本的 Unix 上也會選擇這種 Shell 來編寫腳本。
在本教程中,我們將覆蓋 Bourne shell 中的大部分概念。
Shell 腳本的主要形式就是一系列的命令,這些命令會順序執(zhí)行。良好風(fēng)格的 Shell 會有相應(yīng)的注釋。
Shell 腳本有條件語句(A 大于 B)、循環(huán)語句、讀取文件和存儲數(shù)據(jù)、讀取變量且存儲數(shù)據(jù),當然,Shell 腳本也包括函數(shù)。
Shell 腳本和函數(shù)都是翻譯型語言,所以他們并不會被編譯。
在后面的部分,我們會嘗試寫一些腳本。他們是一些寫有命令的簡單文本文件。
假設(shè)我們創(chuàng)建一個名為 test.sh 的腳本。注意所有腳本的后綴名都必須為 .sh。假設(shè)之前,用戶已經(jīng)往里面添加了一些命令,下面就是要啟動這個腳本。例子如下:
#!/bin/sh
這個命令告訴系統(tǒng),后面的是 bourne shell它應(yīng)念成 shebang,因為 # 被稱為 hash,!稱為 bang
為了創(chuàng)建包含這些指令的腳本,用戶需要先鍵入 shebang 行,然后鍵入指令:
#!/bin/bash
pwd
ls
可以像下面一樣來為腳本添加注釋:
#!/bin/bash
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls
現(xiàn)在用戶已經(jīng)保存了上述內(nèi)容,然后就可以執(zhí)行了:
$chmod +x test.sh
執(zhí)行腳本方式如下:
$./test.sh
這會輸出如下結(jié)果:
/home/amrood
index.htm unix-basic_utilities.htm unix-directories.htm
test.shunix-communication.htmunix-environment.htm
注意:如果想要執(zhí)行當前目錄下的腳本,需要使用如下方式 ./program_name
擴展的 Shell 腳本:
Shell 腳本有幾個構(gòu)造告訴 Shell 環(huán)境做什么和什么時候去做。當然,大多數(shù)腳本比上面復(fù)雜得多。
畢竟,Shell 是一種真正的編程語言,它可以有變量,控制結(jié)構(gòu)等等。無論多么復(fù)雜的腳本,它仍然只是一個順序執(zhí)行的命令列表。
以下腳本使用 read 命令從鍵盤輸入并分配給變量 PERSON,最后打印 STDOUT。
#!/bin/sh
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
下面是運行該腳本的例子:
$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$
更多建議: