#echo ${A:2:2} #第一位從0開始
34
#exPR substr $A 1 3 #第一位從1開始
123
#echo $A |cut -b 2-4 #第一位從1開始#echo $A |cut -b 2,5,6#dirname "/a/b/c/d.txt"
/a/b/c/
#basename "/a/b/c/d.txt"d.txt#echo ${變量/舊/新} 最短匹配#echo ${變量//舊/新} 最長匹配*******************************************************#A=root:x:0:0:root:/root:/bin/bash#echo ${A#*:} 掐頭最短匹配#echo ${A##*:} 掐頭最長匹配#echo ${A#*r}#echo ${A##*r}#echo ${A%:*} 去尾最短匹配#echo ${A%%:*} 去尾最長匹配++++++++++++++++++++++++++++++批量修改擴展名的腳本#touch {a,b,c,d,e}.doc #!/bin/bashfor i in `ls *.$1`doname=${i%.*}mv $i $name.$2done++++++++++++++++++++++++++++變量賦初始值#echo ${TT:-abc}查看TT變量是否有值,有則顯示TT的值否則則顯示abc#QQ=12#echo ${QQ:-abc}#echo ${TT:=abc}查看TT變量是否有值,有則顯示TT的值否則則顯示abc,并且給TT賦值abc#!/bin/bashread -p "確定要刪除嗎y/n?" suresure=${sure:-n}if [ $sure = "y" ];thenrm -rf $1fi++++++++++++++++++++++++++++#!/bin/bashread -p 請輸入一個數字 numnum=${num:-1}sum=0for i in `seq $num`do sum=$((sum+i))doneecho "合計為$sum"++++++++++++++++++++++++++++++1.數組[變量]#A=12345#echo ${#A}#a=(1 2 3 4) 定義數組
#a[0]=1 定義數組#a[1]=ab#a[2]=t12
#echo ${a[0]} 返回數組的一個值#echo ${a[1]}#echo ${a[2]}#echo ${a[*]} 返回數組所有的值#echo ${#a[*]} 返回數組有多少個值使用數組保存ip信息+++++++++++++++++++++++++#!/bin/bashi=0while :doread -p "輸入IP:" IP[ $IP = "EOF" ]&& breaka[$i]=$IPlet i++doneecho "有${#a[*]}個IP,第一個是${a[0]}"+++++++++++++++++++++++++++++linux交互式命令#yum -y install expect#vim test#!/usr/bin/expectspawn ssh 192.168.4.5expect "passWord:" {send "redhat/r"}expect "#" {send "mkdir /qq7/r"}interact練習: fdisk /dev/vdapw+++++++++++++++++++++++++++++++++將expect內置到shell腳本中:#vim test.sh#!/bin/bashexpect << EOFspawn ssh 192.168.4.5expect { "yes/no" { send "yes/r" ; exp_continue } "password:" { send "123/r" }EOF++++++++++++++++++++++++++++++++++++ 1 #!/bin/bash 2 for i in 5 205 3 do 4 expect <<EOF 5 spawn ssh 192.168.4.$i 6 expect "yes" {send "yes/r"} 7 expect "password:" {send "123456/r"} 8 expect "#" {send "touch /data/ttt.txt/r"} 9 expect "#" {send "exit/r"} 10 expect "#" {send "/r"} 11 EOF 12 done++++++++++++++++++++++++++++++++++++正則表達式1.基本正則dog //dog[a-z] //小寫字母[集合]^ //開始$ //結尾
^$ // 表示為空
.//任意單個字符*//前一個字符出現了任意次
.* //表示任意字符
/{n,m/} //前一個字符出現了n到m次/{n,/} //前一個字符出現了n次以上/{n/} //前一個字符出現了n次[^ab]//取反,不要a或b/(/)保留#cat a.txtwelcome vs welcome us welcome as welcome /(welcome/) vs/1 us /1 as/1alias grep="grep --color"#grep --color "/(welcome/)vs/1us/1as/1" a.txt2.擴展正則[優化,加強]{n,m} 、{n,} 、 {n} //匹配前面的符號出現了n到m次、n次以上、n次?//匹配前面的符號出現了0或1次+//匹配前面的符號出現了1次以上()//保留(ab) //合并為整體(ab|ba)//或者 | //或者 /b //單詞邊界 /broot/b ---> root /< //單詞的開頭 /<th 以th開頭的單詞 /> //單詞街上 /<root/> 等于 /broot/b 基本正則兼容性更強[有些軟件不支持擴展正則],擴展正則功能更強#####################################16進制XX:XX:XX:XX:XX:XX[0-9a-f]:[0-9a-f]:[0-9a-f]:[0-9a-f]:[0-9a-f]:[0-9a-f]查找網卡的MAC地址:
#ifconfig eth0 |grep --color -iE "([0-9a-f][0-9a-f]:){5}[0-9a-f][0-9a-f]"
#ifconfig eth0 |grep --color -iE "([0-9a-f]{2}:){5}[0-9a-f]{2}]"
#ifconfig |awk '{print $5}' |grep --color -iE "([0-9a-f][0-9a-f]:){5}[0-9a-f][0-9a-f]"# ifconfig |awk '{print $5}' |egrep --color -i "([0-9a-f][0-9a-f]:){5}[0-9a-f][0-9a-f]"#####################################################################################################################例:MAC地址表示192.168.4.5 5400C5A026C5192.168.4.5 5450B5C026C5192.168.4.5 54c0C59026C5192.168.4.5 5400C50262C5末行模式:%s/舊/新/:%s //([0-9a-fA-F][0-9a-fA-F]/)/([0-9a-fA-F][0-9a-fA-F]/)/([0-9a-fA-F][0-9a-fA-F]/)/([0-9a-fA-F][0-9a-fA-F]/)/([0-9a-fA-F][0-9a-fA-F]/)/([0-9a-fA-F][0-9a-fA-F]/)$//1-/2-/3-/4-/5-/6/192.168.4.5 54-00-C5-A0-26-C5192.168.4.5 54-50-B5-C0-26-C5192.168.4.5 54-c0-C5-90-26-C5192.168.4.5 54-00-C5-02-62-C5#######################################################################新聞熱點
疑難解答