Linux入门(四)
~]# grep -v "/sbin/nologin" /etc/passwd | cut -d: -f1 root sync shutdown halt mageia slackware ~]# grep -v "/sbin/nologin" /etc/passwd | wc -l 6 awk方法: ~]# cat /etc/passwd| awk -F: ‘{if($NF != "/sbin/nologin"){print $1;i++}}END{print "Total: "i}‘ root sync shutdown halt mageia slackware Total: 6 解释:假如最后一个字段不等于“/sbin/nologin”,就打印第一个字段,然后变量 i=i+1。最后显示变量 i 的数值。 -F:以“:”为分隔符。 NF:number of field,字段数量。$NF即表示最后一个字段。 END{}:仅在文本处理完成之后执行一次; 2、查出用户UID最大值的用户名、UID及shell类型 ~]# cut -d: -f1,3,7 /etc/passwd| sort -nr -t: -k2 | head -1 slackware:2002:/bin/tcsh cut: -d:以指定的字符为分隔符; -f:挑选出的字段; sort: -n:基于数值大小而非字符进行排序; -t CHAR:指定分隔符; -k #:用于排序比较的字段; -r:逆序排序; head: -#:查看文件的前n行; 3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 ~]# netstat -tan | awk ‘/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for(i in count){print i,count[i]}}‘ | sort -nr -k2 192.168.74.104 5 127.0.0.1 5 0.0.0.0 4 192.168.74.1 3
/regular expression/:仅处理能够被此处的模式匹配到的行;
split(s,a[,r]):以r为分隔符切割字符s,并将切割后的结果保存至a所表示的数组中;
[ ~]# cat createuser.sh #!/bin/bash # [ $# -ne 1 ] && echo "Error" && exit 1 USERNAME=$1 if id $USERNAME &> /dev/null ;then echo "User $USERNAME already exists" else echo "Add user: $USERNAME" useradd $USERNAME echo "Info: " id $USERNAME fi
[ ~]# bash -n createuser.sh #检测脚本中的语法错误 [ ~]# sh createuser.sh root User root already exists [ ~]# sh createuser.sh roottest Add user: roottest Info: uid=2003(roottest) gid=2003(roottest) groups=2003(roottest)
5、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == ‘sh‘
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"#*******************************************************************************")
call setline(4,"#Author Lam")
call setline(5,"#Date: ".strftime("%Y-%m-%d"))
call setline(6,"#Filename: ".expand("%"))
call setline(7,"#Copyright(C): ".strftime("%Y")." All rights reserved")
call setline(8,"#*******************************************************************************")
call setline(9,"")
endif
endfunc
autocmd BufNewFile * normal G