日期:2014-05-16  浏览次数:20851 次

linux学习小结
if grep pattern myfile > /dev/null; then
echo "find"
else
echo "not find"
fi

[:alnum:]数字或字符
[:alpha:]字符
[:digit:]数字
[:blank:]空格(space)与定位符(tab)字符
[:cntrl:]控制字符
[:graph:]非空格(nonsapce)字符
[:lower:]小写字母
[:upper:]大写字母
[:print:]可显示字符
[:punct:]标点符号字符
[:space:]空白(whitesapce)
[:xdigit:]十六进制数字

[^[:digit:]] 不包含数字的字符串
^[[:digit:]] 以数字开头的字符串

向后引用
\(ab\)\(cd\)[def]*\2\1  abcdcdab
\(why\).*\1 一行里面两个至少两个why
向后引用在寻找重复字符串以及匹配引号时特别有用
\(['"]\).*\1 匹配以单引号或者双引号括起来的字符串,这样就无须担心是单引号或者是双引号先找到了

\{n\} 前置正则表达式所得结果重复出现n次
\{n,} 前置正则表达式所得结果重复出现至少n次
\{n,m\} 前置正则表达式所得结果重复出现n到m次

函数传递数组,两种遍历方式
function printArr(){
for val in $@; do
echo val
done
echo ----------
while [ $# > 0 ]; do
echo $1
shift
done
# echo ---------
# until [ $# == 0 ]; do
# echo $1
# shift
# done
}
arr=(1 "a b c" 3)
printArr "${arr[@]}"
1
abc
3
--------
1
abc
3

case实例
case $val in
one)
echo "one"
;;
2|two)
echo "two"
;;
3)
echo "three"
;;
*)
echo "other"
exit 0
esac



$# 脚本或函数的参数个数
$? 当前脚本或函数返回值
$@ 独立参数 "$1" "$2" "$3" 每个相互独立
$* 整体参数 "$1" $2 $3" 作为一个整体

echo -n echo不自动换行

read 命令
while IFS=: read user pass uid gid fulname homedir shell; do
#对每个用户进行处理
done < /etc/passwd

#$(())算术运算语法
i=0
while [ $i -lt 10 ]; do
echo $i
i=$((i+1))
done

#$()命令执行返回语法
file_list="$(ls)"

#eval 把字符串当成命令行解释
pagelist="ls | more"
eval $pagelist

########################## linux 字符串操作 #############################
#获取字符串长度
${#str}
$(expr length $str)
`expr length $str`

#索引(index)
$(expr index $string $substring)
在字符串$string中所匹配到的$substring第一次所出现的位置.

############提取子串和参数
${string:position} 在$string中从位置$position开始提取子串.
如果$string是"*"或者"@", 那么将会提取从位置$position开始的位置参数
#从左边开始提取
str="1234567"
${str:0} //1234567
${str:0:2} //12
${str:0:-3}//1234
#从右边提取
${str:(-1)} //7
${str:(-2)} //67
echo ${*:2}  # 打印出第2个和后边所有的位置参数.
echo $(@:2} #同上
echo ${*:2:3} # 从第2个开始, 连续打印3个位置参数

###########在$string中从$position开始提取$length长度的子串.
expr substr $string $position $length
stringZ=abcABC123ABCabc
echo `expr substr $stringZ 1 2` # ab

#############子串削除
${string#substring}
    从$string的开头位置截掉最短匹配的$substring.
${string##substring}
    从$string的开头位置截掉最长匹配的$substring.

${string%substring}
    从$string的结尾位置截掉最短匹配的$substring.
${string%%substring}
    从$string的结尾位置截掉最长匹配的$substring.

############子串替换
${string/substring/replacement}
    使用$replacement来替换第一个匹配的$substring.
${string//substring/replacement}
    使用$replacement来替换所有匹配的$substring.
${string/#substring/replacement}
    如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring.
${string/%substring/replacement}
    如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring.


######################### shell awk sed 参数互传 ##########################
#sed要用双引号,awk变量顺序单双$var双单
var=abcd
sed:sed -n "/$var/p"
awk: awk ’/’"$var"’/’
s="abc"; echo | awk '{print "'"$s"'"}' //abc

#sed/awk将变量传给shell可以用eval
eval $(awk ’BEGIN{print "a=ggg b=3"}’)
echo $a; echo $b

ls -t  #按照最后修改时间排序

#配置网卡IP 地址及辅助IP 地址
ifconfig eth0 192.168.98.220 netmask 255.255.255.0
#配置虚拟网卡 IP 地址
ifconfig et