SHELL学习笔记本 一

定义一个函数 user_list

作用:显示用户列表

function user_list {
cat /etc/passwd | grep [5-9][0-9][0-9] | cut -d: -f1,6 | sed {=} | sed 'N; s/\n/:           /'
}
awk  '{FS=":";if($3>500&&$3<1000){print $1}}' /etc/passwd | sed {=} | sed 'N; s/\n/:/'

第2种写法比较好,根据用户的UID来进行筛选比较好控制


效果:wKiom1TJxw_gQoGoAABN1IY9pro172.jpg


以下是一个多级菜单的结构化逻辑嵌套:效果如附件代码

declare flag=0
clear
while [ "$flag" -eq 0 ]
do
 case  in
 1)
 while [ "$flag" -eq 0 ]
 do
    case $input1 in 
      1)
        ;;
      2)  
        ;;
      3) 
        ;;
      0) 
        ;;
      *)
        ;;
    esac
 done
     ;;
  2)
    while 
     do
      case in 
         1)
           ;;
         2)
           ;;
         3) 
           ;;
         4)
           ;;
         0) 
           ;;
         *)
           ;;
      esac
     done
        ;;
  3)
     while 
     do
       case in 
       1)
         ;;
       2) 
         ;;
       0)
         ;;
       *)
         ;;
       esac
      done
    ;;
esac
done
trap "rm $USER_ACCOUNT_Running_Process.rpt" SIGTERM SIGINT SIGQUIT

trap 当捕捉到指定信号后,执行设定的命令

16) SIGTERM 程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理. 通常用来要求程序自己正常退出. shell命令kill缺省产生这个信号

2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出

3) SIGQUIT 和SIGINT类似, 但由QUIT字符(通常是Ctrl-/)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号.


#输出行号
[root@beijing test]# ls | cat -n
    1  1.txt
    2  2.txt
    3  cal.sh
    4  catinfo.txt
    5  cmd.sh
    6  date.sh
    7  func.sh
    8  index.sh
    9  menu.sh
   10  output.session


#输出每个用户所占用的CPU百分比
top -bn 1 | awk '{if (NR>7) print $0}' | awk '{sum[$2]+=$9}END{for (i in sum) printf "%.2f %s\n" ,sum[i],i}' | sort -nr
#统计nginx的access.log中每个url的访问数和流量,输出前10名
awk '{print $7"\t" $10}' access_2010-12-8.log|awk '{S[$1]+=$2;S1[$1]+=1}END{for(i in S) print S[i],S1[i],i}'|sort -rn|head -10


本文出自 “镜kong的小博客” 博客,谢绝转载!

你可能感兴趣的:(shell,学习笔记)