shell指令碼程式設計需要的知識

2022-08-17 19:57:16 字數 2615 閱讀 8155

關於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...