shell常用命令高階部分

2020-08-13 10:21:30
[root@centos2 ~]# a=' '
[root@centos2 ~]# echo ${a:+OK} #如果a爲有值則返回OK
[root@centos2 ~]# sed -i "${b}a ${f}" t.txt    #在變數b後加入變數f的內容
egrep -w "(中|河南)" t.txt   #-w可以精確匹配任意一個
egrep -w "${aa}" t.txt  #aa變數精確匹配
sed -i "/c/ s/$/000/" t.txt #在t.txt文字中包含c字母那行的行未加上000

find ./ -iname a.txt   #不分大小寫找
find ./ -atime -n #多少天以內存取過 (把成mtime是修爲時間,ctime爲更改屬性時間)
find ./ -atime +n  #多少天以前存取過 (把成mtime是修爲時間)
find ./ -empty #找空檔案
find ./ -user  root #查root使用者檔案
find ./ -type f -name "*.txt"  -exec mv {}  {}.bak \;  #批次改檔案後綴
rename .c .h  *.c  #批次改後綴
find ./ -type f -name "*.txt"  -exec tar -cvf 1111.tar.gz {} + ;  #批次壓縮
pgrep -l hci0 |wc -l                #計算hci0進程數量
egrep "root | avahi"      #可過濾兩個關鍵字
sed  "s/[0-9]//g"     #刪除所有的數位
sed -n '$p' #取最後一行,如果是雙引號就要跳脫\$       sed裏面的* $  ( { 都要跳脫\
sed "s/ //g" #去除空格
date -d "-1 day" +"%F %T"     #一天以前的時間 
seq -w 01 09     #取01-09數位
awk -F ':' '{print $NF}'  #$NF取最後一列
cat 11.log |awk -F":" '$2>90 {print $1 "\t" $2}' #awk重要寫法
sar -n DEV 2 2 |egrep "eno"|awk 'END {print "rx=" $5*8000 "kbps" "\n"  "tx=" $6*8000 "kbps"  }'
#上面取網絡卡的上傳和下載速度
ip addr show dev eno16777736 |grep "inet" |awk '{print $2}'|sed -n '1p' #取網絡卡ip
mysql -uroot -h localhost -padmin -Bse "show databases" #直接檢視數據庫存


以下爲建立使用者和組
users(){
userss=(sales devs dply)
for i in `echo "${userss[@]}"`
do
        groupadd ${i}
        if [ "$?" -eq "0" ];then
                for a in `(seq 1 2)`
                do
                        useradd -M -s /sbin/nologin  -g $i $i$a
                done
        else
                echo "your input error..."
                return 1

        fi
done
}

Main(){
        users
        if [ "$?" -eq "1" ];then
                exit 1
        fi
}

Main