shell指令碼基礎和grep文字處理工具企業應用1

2022-06-27 11:30:14 字數 2601 閱讀 6622

bash特性及bash指令碼程式設計初步:

使用者要跟計算機互動就需要有終端,比如:顯示器、鍵鼠等,在終端有附著的介面程式

gui:kde、gnome、xfce

cli:/etc/shells

bash

zshfish

bash的特性:

命令列展開:~,{}

命令別名:alias,unalias

命令歷史:history

檔名通配:glob

快捷鍵:ctrl+a,e,u,k,l

命令補全:$path

路徑補全:

bash特性之:命令hash

快取此前命令的查詢結果:key-value

key:搜尋鍵

value:值

hash命令:

hash:確定並記住每乙個給定名稱命令的完整路徑,如果不提供引數,則顯示已經記住的命令的資訊

-d 忘記每乙個已經記住的命令的位置

~]# hash -d cat

-r 忘記所有記住的位置

bash特性之:變數

程式:指令+資料

指令:由程式檔案提供

資料:io裝置輸入、檔案、管道、變數

程式:演算法+資料結構

變數名+指向的記憶體空間

變數賦值:name=value

變數型別:儲存格式、表示資料範圍、參與的運算

程式語言:

強型別變數

弱型別變數:

bash把所有變數統統視作字元型

bash中的變數無需事先宣告;隨用隨取;相當於,把宣告和賦值過程同時實現

宣告:型別,變數名

變數替換:把變數名出現的位置替換為其所指向的記憶體空間中資料

變數引用:$,$var_name

變數名:變數名只能包含數字、字母和下劃線,而且不能以數字開頭

變數名:見名知義,命名機制遵循某種法則;不能夠使用程式的保留字,例如:if,else,then,while等等

例如:chicken_total

bash變數型別:

本地變數:作用域僅為當前shell程序

環境變數:作用域為當前shell程序及其子程序

區域性變數:作用域為某**片斷(函式上下文)

位置引數變數:當執行指令碼的shell程序傳遞的引數

特殊變數:shell內建的有特殊功用的變數,例:$?,0表示成功,1-255表示失敗

本地變數:

變數賦值:name=value

變數引用:$(name),$name

"":變數名會替換為其值

'':變數名不會替換為其值

檢視變數:set

撤銷變數:unset name

注意:此處非變數引用

環境變數:

變數賦值:

(1)export name=value

(2)name=value

export name

(3)declare -x name=value

(4)name=value

declare -x name

變數引用:$(name),$name

注意:bash內嵌了許多環境變數(通常為全大寫字元),用於定義bash的工作環境,我們自己定義時盡量使用小寫

path,histfile,histsize,histfilesize,histcontrol,shell,home,uid,pwd,oldpwd

檢視環境變數:

export

declare -x

printenv

env撤銷環境變數:unset name

唯讀變數:

declare -r name

readonly name

唯讀變數無法重新賦值,並且不支援撤銷;存活時間為當前shell程序的生命週期,隨shell程序終止而終止

bash特性之多命令執行:

~]# command1;command2;command3;...

邏輯運算:

運算數:真(true,yes,on,1)

假(false,no,off,0)

與:1 && 1 = 1

1 && 0 = 0

0 && 1 = 0

0 && 0 = 0

或:1 || 1 = 1

1 || 0 = 1

0 || 1 = 1

0 || 0 = 0

非:! 1 = 0

! 0 = 1

短路法則:

~]# command1 && command2

command1為「假」,則command2不會再執行

command1為「真」,則command2必須執行

示例: ~]# touch /tmp/test.etc && ls /etc > /tmp/test.etc

~]# command1 || command2

command1為「真」,則command2不會再執行

command1為「假」,則command2必須執行

示例: ~]# id $username || useradd $username

shell指令碼學習(二) grep

1.grep egrep c 列印符合要求的行數 n 在輸出符合要求的行的同時連同行號一起輸出 v 列印不符合要求的行 r 會把目錄下面所有的檔案全部遍歷一遍 i 忽略大小寫 2.例子介紹 grep n root 1.txt grep n v root 1.txt 過濾出所有包含數字行 grep n...

shell指令碼基礎和grep文字處理工具企業應用4

文字處理工具 egrep 支援擴充套件的正規表示式實現類似於grep文字過濾功能 grep e egrep options pattern file.egrep options e pattern f file file.選項 i,o,v,q,a,b,c g 支援基本正規表示式 擴充套件正規表示式的...

Shell指令碼中find和grep命令的區別

在shell指令碼中find 和 grep 同樣都是搜尋命令。find 命令用於在系統中搜尋符合條件的檔名,如果需要模糊查詢,則使用萬用字元進行匹配。搜尋時檔名是完全匹配的。例如 root localhost touch abc 建立檔案abc root localhost touch abcd 建...