初識Shell與Shell腳本

初識Shellphp

Shell 是一個用 C 語言編寫的程序,Shell 既是一種命令語言,又是一種程序設計語言。java

Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶經過這個界面訪問操做系統內核的服務。實際上,shell是一個提供給用戶用來交互的軟件shell並非內核的一部分,卻經過系統調用來執行程序,好比建立文件等linux

Shell 腳本:shell

Shell 腳本(shell script),是一種爲 shell 編寫的腳本程序。shell 和 shell script 是兩個不一樣的概念。編程

Shell 版本:ubuntu

 

Shell 環境:vim

Shell 編程跟 java、php 編程同樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就能夠了。bash

Linux 的 Shell 種類衆多,常見的有:編輯器

1Bourne Shell(/usr/bin/sh或/bin/sh)ide

2Bourne Again Shell(/bin/bash)--Bash (用和免費,Bash 在平常工做中被普遍使用。同時,Bash 也是大多數Linux 系統默認的 Shell

3C Shell(/usr/bin/csh)

4K Shell(/usr/bin/ksh)

5Shell for Root(/sbin/sh)

……

在通常狀況下,人們並不區分 Bourne Shell 和 Bourne Again Shell,因此,像 #!/bin/sh,它一樣也能夠改成 #!/bin/bash。

#! 告訴系統其後路徑所指定的程序便是解釋此腳本文件的 Shell 程序。

Shell腳本:

打開文本編輯器(可使用 vi/vim 命令來建立文件),新建一個文件 test.sh,擴展名爲 sh(sh表明shell),擴展名並不影響腳本執行,見名知意就好,若是你用 php 寫 shell 腳本,擴展名就用 php 好了。

shell一般都是一些交互指令,你經過鍵盤輸入指令,shell執行而且返回結果。當有大量命令須要執行時,一條一條交互就顯得太沒有效率,這時候就能夠把這些指令存入文本文件,而且能夠添加控制語句,像程序流程那樣控制指令的運行。這就是shell script。

例如:

#!/bin/bash

echo "Hello World !"

#! 是一個約定的標記,它告訴系統這個腳本須要什麼解釋器來執行,即便用哪種 Shell。

echo 命令用於向窗口輸出文本。

如何查看系統支持的shell:

$ cat /etc/shells

查看當前正在使用的shell: 

$ echo $SHELL

運行 Shell 腳本有兩種方

一、做爲可執行程序

將上面的代碼保存爲 test.sh,並 cd 到相應目錄

chmod +x ./test.sh  #使腳本具備執行權限

./test.sh  #執行腳本

注意必定要寫成 ./test.sh,而不是 test.sh,運行其它二進制的程序也同樣,直接寫 test.sh,linux 系統會去 PATH 裏尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裏,你的當前目錄一般不在 PATH 裏,因此寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。

二、做爲解釋器參數

這種運行方式是,直接運行解釋器,其參數就是 shell 腳本的文件名,如:

/bin/sh test.sh

/bin/php test.php

這種方式運行的腳本,不須要在第一行指定解釋器信息,寫了也沒用。

sh/bash/csh/Tcsh/ksh/pdksh等shell的區別

     ·     sh(全稱 Bourne Shell): 是UNIX最初使用的 shell,並且在每種 UNIX 上均可以使用。
    Bourne Shell 在 shell 編程方面至關優秀,但在處理與用戶的交互方面作得不如其餘幾種 shell。

     ·     bash(全稱 Bourne Again Shell): LinuxOS 默認的,它是 Bourne Shell 的擴展。
    與 Bourne Shell 徹底兼容,而且在 Bourne Shell 的基礎上增長了不少特性。能夠提供命令補全,命令編輯和命令歷史等功能。它還包含了不少 C Shell 和 Korn Shell 中的優勢,有靈活和強大的編輯接口     ,同時又很友好的用戶界面。

     ·      csh(全稱 C Shell): 是一種比 Bourne Shell更適合的變種 Shell,它的語法與 C 語言很類似。

     ·      Tcsh: 是 Linux 提供的 C Shell 的一個擴展版本。
    T csh 包括命令行編輯,可編程單詞補全,拼寫校訂,歷史命令替換,做業控制和相似 C 語言的語法,他不只和 Bash Shell 提示符兼容,並且還提供比 Bash Shell 更多的提示符參數。

     ·    ksh (全稱 Korn Shell): 集合了 C Shell 和 Bourne Shell 的優勢而且和 Bourne Shell 徹底兼容。

     ·    pdksh: 是 Linux 系統提供的 ksh 的擴展。
   p dksh 支持人物控制,能夠在命令行上掛起,後臺執行,喚醒或終止程序。

 ubuntu(linux)下 source、sh、bash、./ 執行腳本的區別是什麼?

1. source命令用法:

source FileName

做用:在當前 bash 環境下讀取並執行 FileName 中的命令。該 filename 文件能夠無 "執行權限"。

注:該命令一般用命令 . 來替代。

2. sh、bash的命令用法:

sh FileName或

bash FileName

做用:打開一個子 shell 來讀取並執行 FileName 中命令。該 filename 文件能夠無 "執行權限"。

注:運行一個shell腳本時會啓動另外一個命令解釋器。

三、./的命令用法:

./FileName

做用: 打開一個子 shell 來讀取並執行 FileName 中命令,該 filename 文件須要 "執行權限"。

注:運行一個 shell 腳本時會啓動另外一個命令解釋器。

 

如何寫一個shell腳本:

根據如下步驟咱們來寫一個shell腳本: 
1. 使用編輯器,能夠是vi/vim,emacs,固然也能夠是gedit , sublime這一類的軟件 
2. 編輯好你的shell 腳本後,爲你的腳本添加可執行權限: 
語法格式:chmod 權限 腳本名稱 
例:

$ chmod +x your-script-name

$ chmod 755 your-script-name

 

Note: 755意味着user擁有讀寫執行的權限,group和other只擁有讀和執行權限,更多有關的知識可查看Linux文件權限。 
3. 執行shell腳本 
語法格式:

bash your-script-name

sh your-script-name

./your-script-name

通常你們都是用 ./your-script-name 來執行, . 意味着當前文件夾內,可是若是僅僅使用 . your-acript-name,shell不會另起一個進程執行你的命令,意味着執行完你的腳本後,shell就會退出,你能夠在你的機器上試一下。

好吧,讓咱們開始寫一個shell腳本吧! 
使用vim新建一個腳本vim fisrt.sh, 內容以下:

## My fisrt shell script#

clear

echo "Hello,shell!"

執行 ./fisrt.sh ,很明顯沒法運行。添加執行權限:

$ chmod 755 fisrt.sh$ ./fisrt.sh

腳本命令

含義

My fisrt shell script

在shell腳本里面起到註釋的做用,單行註釋

clear

清屏命令

echo 「Hello,shell!」

向屏幕輸出內容

下面寫個更復雜的吧,vim ginfo:

 #

 #

 # Script to print user information who currently login , current date & time

 #

 clear

 echo "Hello $USER"

 echo -e "Today is \c ";date

 echo -e "Number of user login : \c" ; who | wc -l

 echo "Calendar"

 cal

 exit 0

添加可執行權限後,./ginfo輸出如圖: 

 

上面這段腳本輸出當前用戶,打印當前時間,輸出日曆信息。 

相關文章
相關標籤/搜索