码迷,mamicode.com
首页 > 系统相关 > 详细

Linux入门(四)

时间:2020-07-05 17:28:20      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:逆序   info   useradd   ESS   split   vimrc   linux   bin   生成   

1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来。
 
~]# 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所表示的数组中;


 

4、编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等 信息
[root@lamp ~]# 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

 

[root@lamp ~]# bash -n createuser.sh  #检测脚本中的语法错误
[root@lamp ~]# sh createuser.sh root
User root already exists
[root@lamp ~]# sh createuser.sh roottest
Add user: roottest
Info:
uid=2003(roottest) gid=2003(roottest) groups=2003(roottest)

 


 

5、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

 
编辑用户目录下的.vimrc文件如下:

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

 

 

Linux入门(四)

标签:逆序   info   useradd   ESS   split   vimrc   linux   bin   生成   

原文地址:https://www.cnblogs.com/ljt-lam/p/13246598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!