学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧


本文用于记录学习体会、心得,兼做笔记使用,方便以后复习总结。内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK老师和学神教育的优质教学。希望各位因学习需求而要进行转载时,能申明出处为学神教育,谢谢各位!


25.1 Shell中的色彩处理

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e

格式1: echo -e “\033[背景颜色;文字颜色m 要输出的字符 \033[0m”

格式2:echo -e “\e[背景颜色;文字颜色m要输出的字符\e[0m”

例:绿底蓝字


[root@xuegod63 ~]# echo -e "\033[42;34m hello world\033[0m" [root@xuegod63 ~]# echo -e "\e[42;34m hello world\e[0m"

如图:

注:其中42的位置代表底色,34的位置代表的是字的颜色,0m是清除所有格式

1、字背景颜色和文字颜色之间是英文的分号";"

2、文字颜色后面有个m

3、字符串前后可以没有空格,如果有的话,输出也是同样有空格

4、echo显示带颜色,需要使用参数-e ,-e 允许对下面列出的加反斜线转义的字符进行解释.

常见shell输入带颜色文字: 3x代表字的颜色,4x代表背景色

  • echo -e "\033[30m 黑色字 \033[0m"

  • echo -e "\033[31m 红色字 \033[0m"

  • echo -e "\033[32m 绿色字 \033[0m"

  • echo -e "\033[33m 黄色字 \033[0m"

  • echo -e "\033[34m 蓝色字 \033[0m"

  • echo -e "\033[35m 紫色字 \033[0m"

  • echo -e "\033[36m 天蓝字 \033[0m"

  • echo -e "\033[37m 白色字 \033[0m"

  • echo -e "\033[40;37m 黑底白字 \033[0m"

  • echo -e "\033[41;37m 红底白字 \033[0m"

  • echo -e "\033[42;37m 绿底白字 \033[0m"

  • echo -e "\033[43;37m 黄底白字 \033[0m"

  • echo -e "\033[44;37m 蓝底白字 \033[0m"

  • echo -e "\033[45;37m 紫底白字 \033[0m"

  • echo -e "\033[46;37m 天蓝底白字 \033[0m"

  • echo -e "\033[47;30m 白底黑字 \033[0m"

25.2 awk基本应用

grep和egrep:文本过滤的

sed:流编辑器,实现编辑的

awk:文本报告生成器,实现格式化文本输出

25.2.1 概念

AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk命名:Alfred Aho Peter 、Weinberger和brian kernighan三个人的姓的缩写。

awk---->gawk 即: gun awk

在linux上常用的是gawk,awk是gawk的链接文件

man gawk----》pattern scanning and processing language 模式扫描和处理语言。

pattern [ˈpætn] 模式 ; process [ˈprəʊses] 处理

任何awk语句都是由模式和动作组成,一个awk脚本可以有多个语句。模式决定动作语句的触发条件和触发时间。

模式:

正则表达式 : /root/ 匹配含有root的行 /*.root/

关系表达式: < > && || + *

匹配表达式: ~ !~

动作:

变量 命令 内置函数 流控制语句

它的语法结构如下:

awk [options] 'BEGIN{ print "start" } ‘pattern{ commands }’ END{ print "end" }' file

其中:BEGIN END是AWK的关键字部,因此必须大写;这两个部分开始块和结束块是可选的

特殊模块:

BEGIN语句设置计数和打印头部信息,在任何动作之前进行

END语句输出统计结果,在完成动作之后执行

通过上面我们可以知道;AWK它工作通过三个步骤

1、读:从文件、管道或标准输入中读入一行然后把它存放到内存中

2、执行:对每一行数据,根据AWK命令按顺序执行。默认情况是处理每一行数据,也可以指定模式

3、重复:一直重复上述两个过程直到文件结束

AWK支持两种不同类型的变量:内建变量,自定义变量

awk内置变量(预定义变量)

  • $n 当前记录的第n个字段,比如: $1表示第一个字段,$2表示第二个字段
  • $0 这个变量包含执行过程中当前行的文本内容
  • FILENAME 当前输入文件的名
  • FS 字段分隔符(默认是空格)
  • NF 表示字段数,在执行过程中对应于当前的字段数,NF:列的个数
  • FNR 各文件分别计数的行号
  • NR 表示记录数,在执行过程中对应于当前的行号
  • OFS 输出字段分隔符(默认值是一个空格)
  • ORS 输出记录分隔符(默认值是一个换行符)
  • RS 记录分隔符(默认是一个换行符)

25.2.2实例演示

常用的命令选项:

-F fs指定分隔符

-v 赋值一个用户自定义变量

-f 指定脚本文件,从脚本中读取awk命令

1)分隔符的使用

用法:-Ffs 其中fs是指定输入分隔符,fs可以是字符串或正则表达式;分隔符默认是空格

常见写法:

-F: 使用:作为分隔符

-F, 使用,作为分隔符

-F[Aa] 使用【Aa】作为分隔符

例1:


[root@CentOs7_64_1_128 tmp]# echo "AA BB CC DD"|awk '{print $2}'
BB
[root@CentOs7_64_1_128 tmp]# echo "AA|BB|CC|DD"|awk -F"|" '{print $2}'
BB
[root@CentOs7_64_1_128 tmp]# echo "AA,BB,CC,DD"|awk -F"," '{print $2}'
BB [root@CentOs7_64_1_128 tmp]# awk -F":" '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
ods
pegasus

例2:指定多个分隔符

[root@CentOs7_64_1_128 tmp]# echo "A123kjsafaifkjfkasi"|awk -F "fk" '{print $2}'
j

例3:使用FS指定分隔符

[root@CentOs7_64_1_128 tmp]# echo "A123kjsafaifkjfkasi"|awk 'BEGIN{FS="fk"} {print
$2}'j

例4:过滤出本系统的IP地址

[root@CentOs7_64_1_128 tmp]# ifconfig ens33|grep netmask
inet 192.168.87.128 netmask 255.255.255.0 broadcast 192.168.87.255
[root@CentOs7_64_1_128 tmp]# ifconfig ens33|grep netmask|awk '{print $2}'
192.168.87.128

2)关系运算符的使用

例1:


[root@CentOs7_64_1_128 tmp]# echo "AA BB CC DD"|awk '{print $2}'
BB

例2:


[root@CentOs7_64_1_128 tmp]# awk '{print $2+10}' b.txt
12
[root@CentOs7_64_1_128 tmp]# echo "one two three four"|awk '{print $4}'
four
[root@CentOs7_64_1_128 tmp]# echo "one two three four"|awk '{print $NF}'
four
[root@CentOs7_64_1_128 tmp]# echo "one two three four"|awk '{print $(NF-2)}' # 打印倒数第三列
two

例2:打印出passwd文件中用户UID小于10的用户名和它登录使用的shell

参数: $NF 最后一列


[root@CentOs7_64_1_128 tmp]# awk -F":" '$3<10{print $1 $NF}' /etc/passwd
root/bin/bash
bin/sbin/nologin
daemon/sbin/nologin
adm/sbin/nologin
lp/sbin/nologin
sync/bin/sync
shutdown/sbin/shutdown
halt/sbin/halt
mail/sbin/nologin awk -F":" '$3<10{print $1"<====>"$NF}' /etc/passwd # 在S1和$NF之间加入<====> root<====>/bin/bash
bin<====>/sbin/nologin
daemon<====>/sbin/nologin
adm<====>/sbin/nologin
lp<====>/sbin/nologin
sync<====>/bin/sync
shutdown<====>/sbin/shutdown
halt<====>/sbin/halt
mail<====>/sbin/nologin

在\(1和\)NF之间加一下\t tab


[root@CentOs7_64_1_128 tmp]# awk -F":" '$3<10{print $1"\t"$NF}' /etc/passwd
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin

输出多个列时,可以加,分隔一下.


[root@CentOs7_64_1_128 tmp]# awk -F":" '$3<10{print $1"\t"$3"\t"$NF}' /etc/passwd
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
lp 4 /sbin/nologin
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
halt 7 /sbin/halt
mail 8 /sbin/nologin

例2:打印出系统中UID大于1000且登录shell是/bin/bash的用户


[root@CentOs7_64_1_128 tmp]# awk -F":" '{$3>=1000 && $NF=="/bin/bash"}{print $1"\t"
$NF}' /etc/passwdroot /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin
operator /sbin/nologin
games /sbin/nologin
ftp /sbin/nologin
nobody /sbin/nologin
ods /sbin/nologin
pegasus /sbin/nologin
systemd-network /sbin/nologin
dbus /sbin/nologin
polkitd /sbin/nologin
apache /sbin/nologin
unbound /sbin/nologin
libstoragemgmt /sbin/nologin
colord /sbin/nologin
rpc /sbin/nologin
gluster /sbin/nologin
rpcuser /sbin/nologin
nfsnobody /sbin/nologin
amandabackup /bin/bash
saslauth /sbin/nologin
abrt /sbin/nologin
rtkit /sbin/nologin
pulse /sbin/nologin

3)在脚本中的一些应用

例:统计当前内存的使用率


[root@CentOs7_64_1_128 tmp]# vim cachefree.sh #!/bin/bash echo "当前系统的内存使用率为:" USEFREE=`free -m|grep Mem|awk '{print $3/$4*100"%"}'` echo -e "内存使用百分比:\e[31m$USEFREE\e[0m" [root@CentOs7_64_1_128 tmp]# bash cachefree.sh
当前系统的内存使用率为:
内存使用百分比:17.0063%

25.3 awk高级应用

命令格式:

awk [-F | -f | -v ] ‘BEGIN {} /pattern匹配代码块,可以是字符串或正则表达式 / {command1;command2} END {}’file

  • -F 指定分隔符
  • -f 调用脚本
  • -v 定义变量

‘{}’ 引用代码块

{…} 命令代码块,包含一条或多条命令

BEGIN 初始化代码块

/ str / 匹配代码块,可以是字符串或正则表达式

{print A;print B} 多条命令使用分号分隔

END 结尾代码块

在awk中,pattern有以下几种:

1) empty空模式,这个也是我们常用的

2) /regular expression/ 仅处理能够被这个模式匹配到的行

例:打印以root开头的行


[root@CentOs7_64_1_128 tmp]# awk -F":" '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
  1. 行范围匹配 startline,endline

例1:输出行号大于等于3且行号小于等于6的行


[root@CentOs7_64_1_128 tmp]# awk -F":" '(NR>=3&&NR<=6){print NR,$0}' /etc/passwd
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync

内置变量的特殊用法:

  • $0 表示整个当前行
  • NF 字段数量 NF(Number 数量 ; field 字段)
  • NR 每行的记录号,多文件记录递增 Record [ˈrekɔ:d]
  • \t 制表符
  • \n 换行符
  • ~ 匹配
  • !~ 不匹配
  • -F'[:#/]+' 定义三个分隔符

例1:使用NR行号来定位,然后提取IP地址


[root@CentOs7_64_1_128 tmp]# ifconfig ens33|awk 'NR==2{print $2}'
192.168.87.128

注:NR==2表示行号

例2:NR与FNR的区别


[root@CentOs7_64_1_128 tmp]# awk '{print NR"\t"$0}' /etc/hosts /etc/hostname
# NR两个文件行号会统一计数,第二个文件不会从1重新开始
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdoma
in42 ::1 localhost localhost.localdomain localhost6 localhost6.localdoma
in63
4 192.168.87.128 CentOs7_64_1_128
5 CentOs7_64_1_128 [root@CentOs7_64_1_128 tmp]# awk '{print FNR"\t"$0}' /etc/hosts /etc/hostname
# FNR不同的文件行号会重新开始基数,新的文件行号会重新从1开始计算 1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdoma
in42 ::1 localhost localhost.localdomain localhost6 localhost6.localdoma
in63
4 192.168.87.128 CentOs7_64_1_128
1 CentOs7_64_1_128

注:对于NR来说,在读取不同的文件时,NR是一直加的 ;

对于FNR来说,在读取不同的文件时,它读取下一个文件时,FNR会从1开始重新计算的

例3:使用3种方法去除首行


[root@CentOs7_64_1_128 tmp]# route -n|grep -v Kernel #过滤含有Kernel的行
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.87.2 0.0.0.0 UG 100 0 0 ens33
192.168.87.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@CentOs7_64_1_128 tmp]# route -n|sed 1d # 删除第一行
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.87.2 0.0.0.0 UG 100 0 0 ens33
192.168.87.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@CentOs7_64_1_128 tmp]# route -n|awk 'NR!=1{print $0}' # 去除行号为1的行
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.87.2 0.0.0.0 UG 100 0 0 ens33
192.168.87.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

例4:匹配,使用awk查出以包括root字符的行


[root@CentOs7_64_1_128 ~]# awk -F: '/root/{print $0}' /etc/passwd # 查询包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@CentOs7_64_1_128 ~]# awk -F: '/root/' /etc/passwd # 查询包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@CentOs7_64_1_128 ~]# awk -F: '!/root/{print $0}' /etc/passwd # 查询不包含root的行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@CentOs7_64_1_128 ~]# awk -F: '/^root/{print $0}' /etc/passwd # 查询以root开头的行
root:x:0:0:root:/root:/bin/bash
[root@CentOs7_64_1_128 ~]# awk -F: '/bash$/{print $0}' /etc/passwd # 查询以bash结尾的行
root:x:0:0:root:/root:/bin/bash
amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
yangjie:x:1000:1000:yangjie:/home/yangjie:/bin/bash

例5:条件表达式

表达式?if-true:if-false 问号前面是条件,如果条件为真执行if-true,为假执行if-false

例1:如果passwd中UID小于10,则给变量USER赋值成aaa,否则赋值成bbb


awk -F: '{$3<10?USER="aaa":USER="bbb";print $1,USER}' /etc/passwd
root aaa
bin aaa
daemon aaa
adm aaa
lp aaa
sync aaa
shutdown aaa
halt aaa
mail aaa
operator bbb
games bbb
ftp bbb
nobody bbb
ods bbb
pegasus bbb
systemd-network bbb
dbus bbb
polkitd bbb
apache bbb
unbound bbb
libstoragemgmt bbb

用if(条件){命令1;命令2}elif(条件){命令;}else{命令}中,在比较条件中用( )扩起来,在AWK中,如果条件为1为真,0为假

例:如果UID大于10 ,则输出user=>用户名,否则输出pass=>用户名


[root@CentOs7_64_1_128 ~]# awk -F: '{if($3<10){print "user=>"$1}else{print "pass=>"$1}}' /etc/passwd
user=>root
user=>bin
user=>daemon
user=>adm
user=>lp
user=>sync
user=>shutdown
user=>halt
user=>mail
pass=>operator
pass=>games
pass=>ftp
pass=>nobody
pass=>ods
pass=>pegasus
pass=>systemd-network
pass=>dbus
pass=>polkitd
pass=>apache
pass=>unbound
pass=>libstoragemgmt

~ 匹配

!~ 不匹配

例:查出行号小于等于5且包括bin/bash的行


[root@CentOs7_64_1_128 ~]# awk -F: '(NR<=5 && $NF~"bin/bash"){print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@CentOs7_64_1_128 ~]# awk -F: '(NR<=5 && $NF!~"bin/bash"){print $0}' /etc/passwd
# 查找行号小于等于5,且不包括bin/bash的行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

例6:格式化输出

printf命令:格式化输出 printf “FORMAT”,item1,item2.......

format使用注意事项:

1、其与print命令的最大不同是,printf需要指定format样式

2、format用于指定后面的每个item的输出格式

3、printf语句不会自动打印换行符;\n

4、format格式的指示符都以%开头,后跟一个字符;如下:

格式 说明
%c 显示字符的ASCII码
%d, %i 十进制整数
%e, %E 科学计数法显示数值
%f 显示浮点数
%g, %G 以科学计数法的格式或浮点数的格式显示数值
%s 显示字符串
%u 无符号整数
%% 显示%自身

例1:输入passwd文件中的第1列内容,输出时不会换行


wk -F: '{printf "%s/n",$1}' /etc/passwd
root/nbin/ndaemon/nadm/nlp/nsync/nshutdown/nhalt/nmail/noperator/ngames/nftp/nnobody/nods/npegasus/nsystemd-network/nd
bus/npolkitd/napache/nunbound/nlibstoragemgmt/ncolord/nrpc/ngluster/nrpcuser/nnfsnobody/namandabackup/nsaslauth/nabrt/nrtkit/npulse/nradvd/nqemu/nchrony/ntss/ngeoclue/nhacluster/nusbmuxd/ncockpit-ws/nntp/nsssd/ndirsrv/nsetroubleshoot/nnamed/nhsqldb/ntomcat/npkiuser/nsaned/ngdm/ngnome-initial-setup/npcp/nkdcproxy/nipaapi/nmysql/nsshd/navahi/npostgres/npostfix/noprofile/ntcpdump/nyangjie/n[root@CentOs7_64_1_128 ~]#

例2:输出的字母前面添加自定义字符串USERNAME:

[root@CentOs7_64_1_128 ~]# awk -F: '{printf "USERNAME: %s\n",$1}' /etc/passwd
USERNAME: root
USERNAME: bin
USERNAME: daemon
USERNAME: adm
USERNAME: lp
USERNAME: sync
USERNAME: shutdown
USERNAME: halt
USERNAME: mail
USERNAME: operator
USERNAME: games
USERNAME: ftp
USERNAME: nobody
USERNAME: ods
...
USERNAME: pulse

例3:对\(1和\)NF都做格式化输出


[root@CentOs7_64_1_128 ~]# awk -F: '{printf "%s \t %s\n",$1,$NF}' /etc/passwd
# 格式化输出$1和$NF,中间加入\t制表符
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin
operator /sbin/nologin
games /sbin/nologin
ftp /sbin/nologin [root@CentOs7_64_1_128 ~]# awk -F: '{printf "USERNAME:%s====%s\n",$1,$NF}' /etc/passwd
# 格式化输出$1,$NF,中间插入“====”
USERNAME:root====/bin/bash
USERNAME:bin====/sbin/nologin
USERNAME:daemon====/sbin/nologin
USERNAME:adm====/sbin/nologin
USERNAME:lp====/sbin/nologin
USERNAME:sync====/bin/sync
USERNAME:shutdown====/sbin/shutdown
USERNAME:halt====/sbin/halt
USERNAME:mail====/sbin/nologin
USERNAME:operator====/sbin/nologin
USERNAME:games====/sbin/nologin
USERNAME:ftp====/sbin/nologin
USERNAME:nobody====/sbin/nologin
USERNAME:ods====/sbin/nologin

awk修饰符:

N: 显示宽度;

-: 左对齐;

一个字母占一个宽度。默认是右对齐

例4:显示前5行时用10个字符串右对齐显示。如果要显示的字符串不够10个宽度,以字符串的左边自动添加。一个字母占一个宽度。默认是右对齐


[root@CentOs7_64_1_128 ~]# awk -F: '(NR<=5){printf "%10s\n",$1}' /etc/passwd
root
bin
daemon
adm
lp

例5:显示前5行时用10个宽度,左对齐显示


[root@CentOs7_64_1_128 ~]# awk -F: '(NR<=5){printf "%-10s\n",$1}' /etc/passwd
root
bin
daemon
adm
lp

例子6:显示前5行时,第1列使用15个字符宽度左对齐输出,最后一列使用15个字符宽度右对齐输出


[root@CentOs7_64_1_128 ~]# awk -F: '(NR<=5){printf "%-15s%15s",$1,$NF}' /etc/passwd
root /bin/bashbin /sbin/nologindaemon /sbin/nologinadm /sbin/nolog
inlp /sbin/nologin[root@CentOs7_64_1_128 ~]# awk -F: '(NR<=5){printf "%-15s%15s\n",$1,$NF}' /etc/passwdroot /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin

例7:使用开始和结束模块来格式化输出

[root@CentOs7_64_1_128 tmp]# vim test.awk

BEGIN{
print "UserID\t\t\tSHELL"
print "------------------------"
FS=":" # 设置分隔符为:
}
$3>=500 && $NF~"sbin/nologin"{ # 设置匹配条件,UID>=500且最后一列包含sbin/nologin
printf "%-20s%20s\n",$1,$NF # 格式化输出第一列为20字符宽度左对齐,第二列为20字符宽度右对齐
}
END{
print "------------------------"
}
~
[root@CentOs7_64_1_128 tmp]# awk -f test.awk /etc/passwd # 调用test.awk文件对/etc/passwd进行格式化输出
UserID SHELL
------------------------
ods /sbin/nologin
polkitd /sbin/nologin
unbound /sbin/nologin
libstoragemgmt /sbin/nologin
colord /sbin/nologin
gluster /sbin/nologin
nfsnobody /sbin/nologin
saslauth /sbin/nologin
chrony /sbin/nologin
geoclue /sbin/nologin
cockpit-ws /sbin/nologin
sssd /sbin/nologin
dirsrv /sbin/nologin
setroubleshoot /sbin/nologin
saned /sbin/nologin
gnome-initial-setup /sbin/nologin
pcp /sbin/nologin
kdcproxy /sbin/nologin
ipaapi /sbin/nologin
------------------------


END


2019-7-9 10:19:49

学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧的更多相关文章

  1. JavaSE 学习笔记之正则表达式(二十五)

    正则表达式:其实是用来操作字符串的一些规则. 好处:正则的出现,对字符串的复杂操作变得更为简单. 特点:将对字符串操作的代码用一些符号来表示.只要使用了指定符号,就可以调用底层的代码对字符串进行操作. ...

  2. 二十五种网页加速方法和seo优化技巧

    一.使用良好的结构 可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显.XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <e ...

  3. 学习Spring Boot:(二十五)使用 Redis 实现数据缓存

    前言 由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis. 正文 当应用程序 ...

  4. java web学习总结(二十五) -------------------JSP中的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  5. 读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数

    在之前的理论上调用对象的operator=是这样做的 void swap(A& x) { std::swap(a, x.a); } A& operator=(const A& ...

  6. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  7. 学习笔记:CentOS7学习之二十:shell脚本的基础

    目录 学习笔记:CentOS7学习之二十:shell脚本的基础 20.1 shell 基本语法 20.1.1 什么是shell? 20.1.2 编程语言分类 20.1.3 什么是shell脚本 20. ...

  8. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  9. 20155234 2016-2017-2第十周《Java学习笔记》学习总结

    20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...

随机推荐

  1. change([[data],fn]) 当元素的值发生改变时,会发生 change 事件。

    change([[data],fn]) 概述 当元素的值发生改变时,会发生 change 事件.大理石平台价格表 该事件仅适用于文本域(text field),以及 textarea 和 select ...

  2. MySQL 几种性能测试的工具使用

    近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一个整理,备忘,分享 1.mysql ...

  3. 以下是Direct 3d的安装步骤

    安装配置 真的是软肋 o( ̄ε ̄*)   我记录以下 步骤 防止下次忘记了 首先要安装到direct3d 之后在vs上配置  如下: 找到 安装direct3d的文件夹 复制路径(如下 我的路径为 G ...

  4. devstack 使用openstack命令报错 The request you have made requires authentication. (HTTP 401) Missing value auth-url required for auth plugin password

    关联错误: The request you have made requires authentication. (HTTP 401) (Request-ID: req-88ad2cba-0f2d-4 ...

  5. iOS测试-如何指标量化app耗电量和性能XCTest Metrics

    对于app端的专项测试,Android端我们可以用adb或者一些三方工具进行(例如itest)进行实时的性能监控,iOS端的话也可以用用一些三方的工具,但是需要嵌入到我们的项目当中,今天来介绍下Xco ...

  6. 一句话题解&&总结

    CF79D Password: 差分.两点取反,本质是匹配!最短路+状压DP 取反是套路,匹配是发现可以把操作进行目的化和阶段化,从而第二次转化问题. 且匹配不会影响别的位置答案 sequence 计 ...

  7. tecplot 把散点绘成曲面图【转载】

    转载自:http://blog.sina.com.cn/s/blog_a319f5ff0101q6s8.html 找了好久,终于自己研究出来,如何使用tecplot绘制曲面图了 第一步:数据的整理 如 ...

  8. Reids入门介绍

    一.入门概述 1.是什么? Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式 ...

  9. Flutter实现TabBarView切换页面时每个页面只initState一次

    在  TabBarView  组件中切换页面时,子页面每次均会重新  initState  一次,导致每次都切换页面均会重绘,如下图 如果需要只在第一次进页面  initState  一次,后面再进入 ...

  10. 错误Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6 错误详解

    引入Bootstrap的顺序进行修改 <% //获取以/开始,不以/结尾的部分 pageContext.setAttribute("APP_PATH", request.ge ...