1. (( 双重尖括号命令
(( ))双尖括号和[[ ]]双方括号都是bash shell的两项新的扩展,提供了可以在if-then语句中使用的高级特性:
用于数学表达式的双尖括号
用于高级字符串处理功能的双方括号
双尖括号允许将高级数学表达式放入比较中,格式:(( expression ))
比如可以这样使用:
val1=10
if (( $val1 ** 2 > 90 ))
then
(( val2 = $val1 ** 2 ))
echo "the square of $val1 is $val2"
fi```
另外也不需要将双尖括号内的表达式大于号转义,乘号也不许要转义
####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 会将数据流送与文件与屏幕,输出到屏幕的是stdout,可以让下一个命令继续处理。
`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 表示替换掉重复的字符
例子:
首先是文字的替换
last | tr '[a-z]' '[A-Z]'
删除
cat /etc/passwd | tr -d ':'
cat $f | tr -d '\n'```
6. sed 工具
分析关键字的使用,统计。其本身也是一个管道命令,可以分析standard input,sed 可以进行数据替换,删除,新增,选取特定行的功能。
参数:
-e 直接在命令行模式上进行sed动作编辑
-f 直接将sed动作写在文件中,-f filename可以执行filename内的动作
-i 直接修改读取的文件内容,不是由屏幕输出
-n 只有sed处理的那一行才会在屏幕输出
动作:
n1,n2 function 其中n1 n2代表行
function:
a 新增
c 替换
d 删除
i 插入
s 替换 sed -e s/"^-p"//g
p 打印 p通常会与sed -n一起运行
例子:
#删除第2~5行
nl /ect/passwd | sed '2,5d'
#替换为空字符串
cat /etc/passwd | sed -e s/"^-p"//g
#仅列出文件的第5-7行
nl /ect/passwd | sed -n '5.7p'```
####7. awk 工具
这个可以参考之前的gawk文章:http://www.jianshu.com/p/bddcfee1e607
这里只强调一下,处理规则默认是按行处理,由内建变量ORS决定,默认是换行符,然后每一行由内建变量FS(表示字段间的间隔符),默认为空格,分成若干个栏位,其中$0表示整行,$1表示第一个栏位,然后以此类推。NF表示栏位(字段个数)
####8. sleep 延迟指定时间
sleep命令常用于在Linux shell脚本中延迟时间。
sleep 5s
sleep 5m
sleep 5d
sleep 5h```
9. basename 命令
basename返回一个字符串参数的基本文件名称。
basename string Suffix
basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,并将剩余的基本文件名称写至标准输出。
例子:
reqid=$(basename $f .$ubx)
#就是将一个文件的前缀还有后缀去掉,只留下基本的文件名```
####10. echo 命令
有几个特殊的用法得提一下,因为记不起来。。
>-n 表示不换行输出,下一个输出在同一行上
>-e 处理特殊字符
例子:
输出换行符
echo -e "old:$f\nnew: $nf\n"
echo -n "pls enter your password: "```
11. ls命令
有一个参数是ls -1
表示将内容以一列进行显示。