1. (( 雙重尖括號命令
(( ))雙尖括號和[[ ]]雙方括號都是bash shell的兩項新的擴展,提供了可以在if-then語句中使用的高級特性:
用于數(shù)學表達式的雙尖括號
用于高級字符串處理功能的雙方括號
雙尖括號允許將高級數(shù)學表達式放入比較中,格式:(( expression ))
比如可以這樣使用:
val1=10
if (( $val1 ** 2 > 90 ))
then
(( val2 = $val1 ** 2 ))
echo "the square of $val1 is $val2"
fi```
另外也不需要將雙尖括號內(nèi)的表達式大于號轉(zhuǎn)義,乘號也不許要轉(zhuǎn)義
####2. [[ 雙方括號
該命令提供了針對字符串比較的高級特性,格式:`[[ expression ]] `
可以使用標準字符串進行比較,還可以使用模式匹配,即使用正則表達式來匹配字符串的值。
if [[ $USER == r* ]]
then
echo "Hello $USER"
else
echo "Sorry. I do not know you"
fi```
另外一個例子:
[[ $step != 1 && $step != 2 ]] && {
echo "Usage: ./example.sh 1 or 2"
exit 1
}```
####3. tee雙重重定向
tee 會將數(shù)據(jù)流送與文件與屏幕,輸出到屏幕的是stdout,可以讓下一個命令繼續(xù)處理。
`tee -a file `以累加的方式寫入file
一個例子:
echo "clean log files" | tee -a $out_file```
4. cut 選取命令
cut 可以將一段信息的某一段切出來,處理的信息是以行為單位的。
cut -c表示以字符為分隔進行cut
cut -d "分隔字符" -f fields ,-f后面接需要第幾段,可以是一個范圍,例子如下:
grep -m 1 dbg $f | cut -d '"' -f 2 | cut -d ',' -f 4- ```
grep -m 1表示的是只匹配一次
####5. tr 命令
用于刪除一段信息中的文字,或者進行文字信息的替換。
`tr -[ds] SET1...`
-d 表示刪除信息中的這個SET1字符串
-s 表示替換掉重復(fù)的字符
例子:
首先是文字的替換
last | tr '[a-z]' '[A-Z]'
刪除
cat /etc/passwd | tr -d ':'
cat $f | tr -d '\n'```
6. sed 工具
分析關(guān)鍵字的使用,統(tǒng)計。其本身也是一個管道命令,可以分析standard input,sed 可以進行數(shù)據(jù)替換,刪除,新增,選取特定行的功能。
參數(shù):
-e 直接在命令行模式上進行sed動作編輯
-f 直接將sed動作寫在文件中,-f filename可以執(zhí)行filename內(nèi)的動作
-i 直接修改讀取的文件內(nèi)容,不是由屏幕輸出
-n 只有sed處理的那一行才會在屏幕輸出
動作:
n1,n2 function 其中n1 n2代表行
function:
a 新增
c 替換
d 刪除
i 插入
s 替換 sed -e s/"^-p"http://g
p 打印 p通常會與sed -n一起運行
例子:
#刪除第2~5行
nl /ect/passwd | sed '2,5d'
#替換為空字符串
cat /etc/passwd | sed -e s/"^-p"http://g
#僅列出文件的第5-7行
nl /ect/passwd | sed -n '5.7p'```
####7. awk 工具
這個可以參考之前的gawk文章:http://www.itdecent.cn/p/bddcfee1e607
這里只強調(diào)一下,處理規(guī)則默認是按行處理,由內(nèi)建變量ORS決定,默認是換行符,然后每一行由內(nèi)建變量FS(表示字段間的間隔符),默認為空格,分成若干個欄位,其中$0表示整行,$1表示第一個欄位,然后以此類推。NF表示欄位(字段個數(shù))
####8. sleep 延遲指定時間
sleep命令常用于在Linux shell腳本中延遲時間。
sleep 5s
sleep 5m
sleep 5d
sleep 5h```
9. basename 命令
basename返回一個字符串參數(shù)的基本文件名稱。
basename string Suffix
basename 命令讀取 String 參數(shù),刪除以 /(斜杠) 結(jié)尾的前綴以及任何指定的 Suffix 參數(shù),并將剩余的基本文件名稱寫至標準輸出。
例子:
reqid=$(basename $f .$ubx)
#就是將一個文件的前綴還有后綴去掉,只留下基本的文件名```
####10. echo 命令
有幾個特殊的用法得提一下,因為記不起來。。
>-n 表示不換行輸出,下一個輸出在同一行上
>-e 處理特殊字符
例子:
輸出換行符
echo -e "old:$f\nnew: $nf\n"
echo -n "pls enter your password: "```
11. ls命令
有一個參數(shù)是ls -1
表示將內(nèi)容以一列進行顯示。