shellcheatsheet(備忘錄)-創(chuàng)新互聯(lián)

老亞瑟比較喜歡用cheat sheet(備忘錄)的方式學(xué)習(xí)一些編程里零散但又經(jīng)常會用到的知識點。相比于冗長詳盡的博客,這種方式既簡單輕量,同時每次查看的時候可以通過大腦對知識進(jìn)行自動補全,能不斷提升對應(yīng)知識點的記憶。但是缺點也很明顯,就是講述不夠細(xì)致全面。所以,如果讀者對相關(guān)cheat sheet的知識儲備太少的話,建議先系統(tǒng)學(xué)習(xí)。
下面是我學(xué)習(xí)和使用Linux shell時的cheat sheet。

成都創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站制作方案、改版、費用等問題,行業(yè)涉及加固等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。測試操作符
test = [ ]  這兩個是shell 程序
[[ ]]       這個是shell 關(guān)鍵字
引號
" " 雙引號中可以使用$對變量取值
' ' 單引號中所有字符均表示字面值,無法用$取值
字符串比較
[[ "$s1" != "$s2" ]] [ "$s1" != "$s2" ]
[[ "$s1" == "$s2" ]] [ "$s1" == "$s2" ]
[[ "$s1" = "$s2" ]] [ "$s1" = "$s2" ]
[[ "$s1">"$s2" ]] [ "$s1" \>"$s2" ]
[[ "$s1"< "$s2" ]] [ "$s1" \< "$s2" ]
數(shù)字比較(對[ ] [[ ]] 均有效)
-eq -ne
-gt -ge
-lt -le
字符串測試(對[ ] [[ ]] 均有效)
-z True for zero
-n True for non-zero
文件測試(對[ ] [[ ]] 均有效)
-e True for file exist
-f True for normal file exist
-d True for dir exist
-c True for char file exist
-b True for block file exist
-p True for pipe file exist
-S True for socket file exist
-L/-h True for symbol link exist
-r/w/x True for readable/writable/executable file exist
邏輯運算符
[[ cond-a && cond-b ]] [ cond-a -a cond-b ]
[[ cond-a || cond-b ]] [ cond-a -o cond-b ]
[[ ! cond ]] [ ! cond ]
正則匹配
[[ "$ss" =~ regex ]] && echo ${BASH_REMATCH[1]}
if 判斷
if TEST-COMMANDS; then
	CONSEQUENT-COMMANDS
elif TEST-COMMANDS; then
	CONSEQUENT-COMMANDS
else
	CONSEQUENT-COMMANDS
fi
for 循環(huán)
for i in “file1” “file2” “file3”
for i in /boot/*
for i in /etc/*.conf
for i in $(seq -w 10)
for i in {1..10}
for i in $(ls)
for i in $(< file)
for i in "$@"
for ((i=0; i<5; i++))
do
	commands
done
while/until 循環(huán)
while read -r line
do
	commands
done< "path/to/file"

while getopts :xy: opt
do
	case "$opt" in
	x)
		;;
	y)
		Y=$OPTARG
		;;
	:)
		echo "require args"
		;;
	?)
		echo "invalid args"
		;;
	esac
done

while true
while :
until condition  至少執(zhí)行一次,和while 條件相反
done 2>error.log  在所有循環(huán)體的done 后面可以做標(biāo)準(zhǔn)輸出/錯誤的重定向,while/until循環(huán)體的done可后面以做標(biāo)準(zhǔn)輸入重定向
select/case 循環(huán)
select VAR in LIST
do
	case EXPR in
	PATTERN1)
		CONSEQUENT-COMMANDS
		;;
	PATTERN2 | PATTERN3)
		CONSEQUENT-COMMANDS
		;;
	esac
done
# case 語句可以單獨使用
循環(huán)控制
break      用于for/while/until/select
continue   用于for/while/until
特殊字符
$@ argv    
$# argc   
$* argv to string
$0 script name   
$? Last cmd exit code
$$ process ID
變量
$PARAMETER = ${PARAMETER}
${!PARAMETER}  間接參數(shù)擴展
${!PREFIX*} = ${!PREFIX@}  變量名擴展
字符串操作
${PARAMETER#PATTERN}    從前向后找,刪除最短匹配串
${PARAMETER##PATTERN}   從前向后找,刪除最長匹配串
${PARAMETER%PATTERN}    從后向前找,刪除最短匹配串
${PARAMETER%%PATTERN}   從后向前找,刪除最長匹配串
${PARAMETER/PATTERN/STRING}  查找并替換一處匹配
${PARAMETER//PATTERN/STRING} 查找并替換所有匹配
${PARAMETER/PATTERN}         查找并刪除一處匹配
${PARAMETER//PATTERN}        查找并刪除所有匹配
${#PARAMETER}                計算字符串長度
${PARAMETER:OFFSET:LENGTH}   獲取子串,LENGTH可忽略
數(shù)組
myarrary=(value1 value2 valueN)  數(shù)組初始化
${myarrary[3]}="new one"         插入數(shù)組元素
unset myarrary[3]                刪除數(shù)組元素
${myarrary[@]} = ${myarrary[*]}  遍歷數(shù)組元素
myarray=(${STRING})              將字符串按空格轉(zhuǎn)換成數(shù)組
數(shù)學(xué)運算
var=$(( EXPR ))  用算術(shù)擴展進(jìn)行整數(shù)計算
let EXPR         用let進(jìn)行算術(shù)運算,運算式中不能有空格
expr EXPR        用expr進(jìn)行算術(shù)運算,運算符兩邊必須用空格,并且只能計算整數(shù)
函數(shù)
定義1 function func_name {commands }  
定義2 func_name() {commands }
函數(shù)入?yún)?$1 .. $n
定義函數(shù)內(nèi)部變量  local
函數(shù)返回碼  return N
函數(shù)返回值,函數(shù)內(nèi)最后一條命令的結(jié)果
調(diào)用 func_name arg1 arg2
調(diào)用,接收返回值 ret=$(func_name arg1 arg2)
調(diào)用,轉(zhuǎn)入后臺 func_name args &
加載外部腳本文件
. /path/to/bash/script args
source /path/to/bash/script args
標(biāo)準(zhǔn)輸出、錯誤同時重定向
command &>filename
command >& filename
command >filename 2>&1
command 2>&1 >filename
管道過濾器
awk -F: '{print $1 $NF}' #顯示列
cut -d: -f1,6            #顯示列
cut -c 1                 #顯示第一個字符
grep "string"            #顯示包含string的行
grep "regex"             #顯示匹配正則表達(dá)式的行
grep -i "string"         #顯示包含string的行,忽略大小寫
grep -v "string"         #顯示不包含string的行
grep -E "str1|str2"      #顯示包含str1或者str2的行
head -n 5				 #顯示前5行
paste -d: file1 file2    #將文件內(nèi)容橫向合并,分隔符為:
paste file1 - - -        #將文件內(nèi)容顯示為3列
sed 's/xxx/yyy/g'        #將xxx替換為yyy
sed '/xxx/d'             #將xxx刪除
sed -e cmd1 -e cmd2      #執(zhí)行多個sed 命令
sed -i cmd               #直接修改文件
sort -n                  #首列按字面數(shù)值排列
sort -u                  #排序后去重
strings                  #過濾出可打印字符串
tail -n 5                #顯示文件最后5行
tee                      #不影響顯示的情況下存儲輸出到文件
tr 'regex1' 'regex2'     #將regex1 轉(zhuǎn)換成regex2
tr -d 'regex'            #刪除regex匹配到的字符
uniq                     #刪除重復(fù)的行
uniq -c                  #計算重復(fù)行數(shù)
wc -l                    #計算行數(shù)
grep 正則字符集
^    	#錨定行的開始 
$    	#錨定行的結(jié)束
.    	#匹配一個非換行符的字符 
*    	#匹配零個或多個先前字符
.*   	#一起用代表任意字符
[]   	#匹配一個指定范圍內(nèi)的字符。 
[^]  	#匹配一個不在指定范圍內(nèi)的字符
/(/)   	#標(biāo)記匹配字符
/< 		#錨定單詞的開始,
/>#錨定單詞的結(jié)束
/{m,n/} #重復(fù)字符m~n次,n可忽略
/w 		#[A-Za-z0-9]
/W 		#/w的反置形式
/b 		#單詞鎖定符
[[:alnum:]]		#[A-Za-z0-9]
[[:alpha:]]		#[A-Za-z]
[[:digit:]]		#[0-9]
[[:lower:]]		#[a-z]
[[:upper:]]		#[A-Z]
[[:blank:]]		#空字符: 空格鍵符 和 制表符
[[:space:]]		#空格字符: 制表符、換行符、垂直制表符、換頁符、回車符和空格鍵符
awk 語法
awk -F: 'PATTERN { ACTION }'
awk -F: 'BEGIN { ACTION } /pattern1/ { ACTION } /pattern2/ { ACTION } END { ACTION }'
推薦閱讀

《Linux Shell 命令行及腳本編程實例詳解》

原始博客連接: https://editor.csdn.net/md?articleId=127997233

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前題目:shellcheatsheet(備忘錄)-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article44/egihe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、企業(yè)網(wǎng)站制作、移動網(wǎng)站建設(shè)、網(wǎng)站建設(shè)營銷型網(wǎng)站建設(shè)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)