Shell 教程
Shell 教程
Shell 是一個用C語言編寫的程序,它是用戶使用Linux的橋樑。 Shell既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。
Ken Thompson的sh是第一種Unix Shell,Windows Explorer是一個典型的圖形界面Shell。
Shell 腳本
Shell 腳本(shell script),是一種為shell編寫的腳本程序。
業界所說的shell通常都是指shell腳本,但讀者朋友要知道,shell和shell script是兩個不同的概念。
由於習慣的原因,簡潔起見,本文出現的"shell編程"都是指shell腳本編程,不是指開發shell自身。
Shell 環境
Shell 編程跟java、php編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
Linux的Shell種類眾多,常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- ……
本教程關注的是Bash,也就是Bourne Again Shell,由於易用和免費,Bash在日常工作中被廣泛使用。 同時,Bash也是大多數Linux系統默認的Shell。
在一般情況下,人們並不區分Bourne Shell和Bourne Again Shell,所以,像#!/bin/sh ,它同樣也可以改為#!/bin/bash 。
#!告訴系統其後路徑所指定的程序即是解釋此腳本文件的Shell程序。
第一個shell腳本
打開文本編輯器(可以使用vi/vim命令來創建文件),新建一個文件test.sh,擴展名為sh(sh代表shell),擴展名並不影響腳本執行,見名知意就好,如果你用php寫shell 腳本,擴展名就用php好了。
輸入一些代碼,第一行一般是這樣:"#!" 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種Shell。
echo命令用於向窗口輸出文本。
運行Shell腳本有兩種方法:
1、作為可執行程序
將上面的代碼保存為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告訴系統說,就在當前目錄找。
2、作為解釋器參數
這種運行方式是,直接運行解釋器,其參數就是shell腳本的文件名,如:
/bin/sh test.sh /bin/php test.php
這種方式運行的腳本,不需要在第一行指定解釋器信息,寫了也沒用。