關於shell的預備知識
shell 是乙個用 c 語言編寫的程式,它是使用者使用 linux 的橋梁即使用者介面。使用者把指令傳給shell,然後shell再傳輸給系統核心,接著核心再去支配計算機硬體去執行各種操作。
shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務。
指令碼第一行: #!/bin/bash。 #! 告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 shell 程式。
使用jobs可以檢視當前shell中後台執行的任務。用fg可以調到前台執行。sleep命令就是休眠的意思,後面跟數字,單位為秒,常用語迴圈的shell指令碼中。
萬用字元
在bash下,同樣可以使用星號*來匹配零個或多個字元,而用問號?匹配乙個字元。
輸入輸出重定向
輸入重定向用於改變命令的輸入,輸出重定向用於改變命令的輸出。輸出重定向更為常用,它經常用於將命令的結果輸入到檔案中,而不是顯示在螢幕上。輸入重定向的命令是,以及追加/附加重定向》 (即附加式) 。
linux下設定自定義變數規則
1. 設定變數的格式為」a=b」,等號兩邊不能有空格。
2. 變數名只能由英文本母、數字以及下劃線組成,而且不能以數字開頭。
3. 當變數內容帶有特殊字元(如空格)時,需要加上單引號。 例如:myname=『ruming li』
4. 當變數內容中本身帶有單引號,這就需要用到雙引號了。 例如:myvar=「ruming』s」
5. 如果變數內容中需要用到其他命令執行結果則可以使用反引號。 例如:mywd=`pwd`
6. 當變數內容可以累加其他變數的內容時,需要加雙引號。 例如:myname=「$logname」ruming
單引號和雙引號的區別:用雙引號時不會取消掉裡面出現的特殊字元的本身作用(如上面的$),而使用單引號時則裡面的特殊字元全部失去它本身的作用。
linux shell中的特殊符號
*:代表零個或多個字元或數字。它可以沒有任何字元,也可以有多個字元,總之有或沒有都能匹配出來。
? :只代表乙個任意的字元。不管是數字還是字母,只要是乙個都能匹配出來。
# :這個符號在linux中表示注釋說明的意思,即」#」後面的內容會被linux忽略掉。
\ :脫意字元,將後面的特殊符號(例如」*」,」?」,"花括號,其內部為數字,表示前面的字元要重複的次數。 注意,左右都需要加上脫意字元\。具體格式是 『\』其中n1grep、sed、awk
grep 工具的功能其實還不夠強大,它實現的只是查詢功能,而它卻不能實現把查詢的內容替換掉。
如果用vim的時候,可以查詢也可以替換,但是只侷限於在文字內部來操作,而不能輸出到螢幕上。
sed工具以及下面要講的awk工具就能實現把替換的文字輸出到螢幕上的功能了,而且還有其它更豐富的功能。sed和awk都是流式編輯器,是針對文件的行來操作的。
sed
sed命令格式如下:
sed 引數 功能選項 檔名或其他標準輸入
sed引數如下:
-i 修改檔案內容
-n 取消預設輸出
sed功能選項如下:
a 追加內容到指定行後
i 插入內容到指定行前
d 刪除指定行
c 用新行替換舊行(不常用)
s 對每一行第一次匹配到的內容進行替換,配合標誌g可以將一行中所有匹配到的內容進行替換
p 輸出指定內容,缺省會輸出2次匹配到的內容
列印某行的句法: sed -n 『n』p filename 單引號內的n是乙個數字,表示第幾行,』p』字元表示列印。
前面grep中使用的特殊字元,如』^』, 『$』, 『.』, 『*』等同樣也能在sed中使用。
替換字元或字串
awk比sed更加強大,它能做到sed能做到的,也能做到sed不能做到的。
head –n2 test.txt | awk –f』:』 『』 擷取文件中的某個段。
注:-f 選項的作用是指定分隔符,如果不加-f指定,則以空格或者tab為分隔符。print為列印的動作,用來列印出某個字段。$1為第乙個字段,$2為第二個字段,依次類推,有乙個特殊的那就是$0,它表示整行。
注意awk的格式,-f後緊跟單引號,然後裡面為分隔符,print的動作要用』』括起來,否則會報錯。print還可以列印自定義的內容,但是自定義的內容要用雙引號括起來。
awk的內建變數
常用的變數有:
nf :用分隔符分隔後一共有多少段;
nr :行數,第幾行。
Shell指令碼程式設計01 基礎知識
shell指令碼與windows dos下的批處理相似,就是將各類命令預先放入到乙個檔案中,然後執行該檔案,便可以達到與批處理類似的功能,主要是方便管理員進行設定或者管理用的。換句話來說,shell指令碼是利用shell的功能所寫的乙個程式,這個程式使用純文字檔案,將一些shell的語法與指令寫在裡...
01 Shell指令碼程式設計入門知識
linux shell語言使用背景 目前全球正處於 網際網路 的時代,各行各業都與網際網路掛鉤,比如網際網路 教育 網際網路 銷售等等。幾乎所有的商品 服務網上都能找得到,而支撐網際網路的幕後支柱就是linux系統。linux運維技術成為it技術人員的必備技能。想要降低linux運維成本就要進行運維...
Shell 指令碼程式設計
1 執行shell的方法 指定shell bin sh 由sh執行指令碼 指令碼總是由sh解釋 顯示呼叫shell sh scriptname 在當前shell中執行指令碼 profile profile是可執行的 ksh profile profile是不可執行的 改變當前的執行環境責應輸入.pr...