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 建...