shell指令碼與windows/dos下的批處理相似,就是將各類命令預先放入到乙個檔案中,然後執行該檔案,便可以達到與批處理類似的功能,主要是方便管理員進行設定或者管理用的。
換句話來說,shell指令碼是利用shell的功能所寫的乙個程式,這個程式使用純文字檔案,將一些shell的語法與指令寫在裡面,然後用正規表示法,管線命令以及資料流重導向等功能,以達到我們所想要的處理目的。
這裡有必要說一下shell和shell指令碼的區別。
shell就是乙個命令列直譯器,它的作用就是遵循一定的語法將輸入的命令加以解釋並傳給系統。它為使用者提供了乙個向linux傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動、掛起、停止甚至是編寫一些程式。shell本身是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。
shell既是一種命令語言,又是一種程式語言(shell指令碼)。作為命令語言,它互動式地解釋和執行使用者輸入的命令;作為程式語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支。它雖然不是 linux系統核心的一部分,但它呼叫了系統核心的大部分功能來執行程式、建立文件並以並行的方式協調各個程式的執行。
1.語法基礎
1.1開頭
shell指令碼程式必須以如下的語句行開始(必須方在檔案的第一行):
#!/bin/sh
「#!/bin/sh"是對shell的宣告,說明你所用的是那種型別的shell及其路徑所在。如果沒有該語句宣告,則指令碼將在預設的shell中執行。
1.2注釋
在進行shell程式設計時,以#開頭的句子表示注釋,直到這一行的結束。
備註:「#!/bin/sh"不是注釋。
1.3變數
在shell程式設計中,所有的變數都由字串組成,並且不需要對變數進行宣告。對變數賦值,可以使用如下語句:
var="hello world"
備註:「=」前後不能有空格,句尾不能有「;」。
2.常用指令
echo "some text": 將文字內容列印在螢幕上
ls: 檔案列表
wc –l filename:計算檔案行數
wc -w filename:計算檔案中的單詞數
wc -c filename: 計算檔案中的字元數
cp sourcefile destfile: 檔案拷貝
mv oldname newname : 重新命名檔案或移動檔案
rm filename: 刪除檔案
grep 'string' filename: 在檔案內搜尋字串
cat filename: 輸出檔案內容到螢幕上
file filename: 得到檔案型別
read var: 提示使用者輸入,並將輸入賦值給變數
find: 搜尋檔案
tee: 將資料輸出到標準輸出裝置(螢幕) 和檔案比如:somecommand | tee outfile
basename filename: 返回不包含路徑的檔名
dirname filename: 返回檔案所在路徑
sed: 查詢替換
Shell指令碼基礎知識
shell 變數 命名規則 首字元為字母 中間不能有空格,可用下劃線 不能使用標點和bash的關鍵字 賦值 顯示命名 不能加 語句賦值 唯讀變數 readonly variable name 刪除變數 unset varible name 不能刪除唯讀變數 shell字串 字串可以用單引號 雙引號 ...
shell指令碼基礎知識
自定義shell變數時,變數有什麼規格?可以使用字母,數字,下劃線,不能以數字開頭 變數名區分大小寫 賦值時等號兩邊不要有空格 不要使用關鍵字或特殊字元,給同乙個變數多次賦值時,最後一次生效。簡述預定義變數 0 的作用?儲存當前執行的程式pid號 上乙個執行命令的返回狀態 0 當前執行的指令碼名 位...
shell指令碼基礎知識
雖然現在能在linux系統下生存,但是自覺效率太低,和高手有很大的差距。這就是關於linux的知識太過匱乏,有很多事情知道該怎麼做,但是就是沒法在linux下實現,為了提公升工作效率,必須要接觸linux高階技巧 linux的東西比較深,沒法一下學完,所以只要能掌握生信必備的基礎就好了。一些主要的流...