第二波命令-下部    

第1章 显示行号

打印配置文件nginx.conf内容的行号及内容 如何做?
创建环境

[root@nfsnobody ~]# mkdir /nfsnobody &&
echo stu{01..10} |xargs -n1 > /nfsnobody/ngingx.conf

1.1 方法一 cat

-n 显示行号

[root@nfsnobody nfsnobody]# cat -n
ngingx.conf    查看文件有几行 cat -n
1  stu01
2  stu02
3  stu03
4  stu04
5  stu05
6  stu06
7  stu07
8  stu08
9  stu09
10  stu10

1.2 方法二 vim

vim /nfsnobody/nginx.conf
进入后
:set nu    显示行号
:set
nonu  取消显示行号

1.3 方法三 awk

NR   行号
$1   表示第一列
$0   表示一整行的内容

[root@nfsnobody ~]# awk '{print NR,$1}'
/nfsnobody/ngingx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10

1.4 方法四

nl
nl  number of lines  专门用于显示行号的

[root@nfsnobody nfsnobody]# nl ngingx.conf
1  stu01
2  stu02
3  stu03
4  stu04
5  stu05
6  stu06
7  stu07
8  stu08
9  stu09
10  stu10

1.5 第五种方法 grep

-n 显示行号
. 正则表达式  表示任意一个字符

[root@nfsnobody nfsnobody]# grep -n "."
ngingx.conf
1:stu01
2:stu02
3:stu03
4:stu04
5:stu05
6:stu06
7:stu07
8:stu08
9:stu09
10:stu10

1.6 第六种方法 sed

=  表示显示行号

[root@nfsnobody nfsnobody]# sed '=' ngingx.conf|xargs -n2
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10

1.7 第七种方法 less (了解)

[root@nfsnobody logs]# less -N
/nfsnobody/ngingx.conf

1.8 练习题

显示/proc/mounts
文件的行号和第1列和第3列
加上 column -t 是为了 按列显示 可以不加

[root@nfsnobody nfsnobody]# awk '{print NR,$1,$3}'
/proc/mounts |column -t
1
rootfs         rootfs
2
proc           proc
3
sysfs          sysfs
4
devtmpfs       devtmpfs
5
devpts         devpts
6
tmpfs          tmpfs
7
/dev/sda3      ext4
8
none           selinuxfs
9
devtmpfs       devtmpfs
10
/proc/bus/usb  usbfs
11  /dev/sda1      ext4
12
none           binfmt_misc

第2章 关于find下mtime参数

2.1 查找删除七天之前的日志

已知nginx服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天的访问日志!请问如何解决?请给出解决办法或配置或处理命令。(提示:可以从nginx服务配置上着手,也可以从生成出来的日志上着手。)

创建环境
mkdir -p /app/logs
cd /app/logs
for  time
in  {01..20};do  date -s "201805$time"; touch
access_www_$(date +%F).log ;done
date -s "20180520"
date 显示时间 修改时间
date -s  修改时间
搜索七天以前的
[root@nfsnobody logs]# find -mtime +7|xargs ls
-l
为方便 这边使用查看ls 代替删除
实际工作中 ls换成rm即可
[root@nfsnobody logs]# find /app/logs/ -type f
-name "*.log" -mtime +7|xargs ls -l
##完整格式

2.2 练习题

找出/app/logs 下面以.log结尾的7天之前的文件
显示详细信息(ls -l) (3种方法)

2.2.1 方法一
[root@nfsnobody logs]# find /app/logs/ -type f
-name "*.log" -mtime +7 |xargs ls -l

2.2.2 方法二
[root@nfsnobody logs]# ls -l $(find /app/logs/
-type f -name "*.log" -mtime +7)

2.2.3 方法三
[root@nfsnobody logs]# find /app/logs/ -type f
-name "*.log" -mtime +7 -exec ls -l {} ;

第3章 运行级别及iptables补充

3.1 运行级别补充

查看运行级别  runlevel
切换 init

3.2 关闭iptable

装完Centos系统后,希望iptables,仅关闭3运行级别
怎么做

[root@nfsnobody logs]# chkconfig |grep
"ipt"   ##查看
iptables
0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@nfsnobody logs]# chkconfig --level 3 iptables off   ##关闭3
[root@nfsnobody logs]# chkconfig |grep
"ipt"              ##关闭后检查
iptables        0:off   1:off   2:on    3:off   4:on    5:on    6:off

第4章 单独取一列命令补充

已知如下命令及结果:

[nfsnobody@test ~]$ echo "I am nfsnobody,myqq is
31333741">>nfsnobody.txt
[nfsnobody@test ~]$ cat nfsnobody.txt
I am nfsnobody,myqq is 31333741

创建环境

mkdir /nfsnobody
echo "I am nfsnobody,myqq is
31333741">/nfsnobody/nfsnobody.txt

4.1 方法一 sed |awk

[root@nfsnobody nfsnobody]# sed 's#,# #g' nfsnobody.txt |awk '{print $3,$6}'
nfsnobody 31333741

4.2 方法二 tr | awk

tr
sed命令的阉割版
tr   一对一的替换

[root@nfsnobody nfsnobody]# tr "," " "<nfsnobody.txt |awk '{print $3,$6}
nfsnobody 31333741

4.3 方法三 tr | cut

-d  指定分隔符
-f  某一列

[root@nfsnobody nfsnobody]# tr "," " " < nfsnobody.txt |cut -d " " -f3,6
nfsnobody 31333741

4.4 方法四 sed | cut

[root@nfsnobody nfsnobody]# sed 's#,# #g' nfsnobody.txt |cut -d " " -f3,6
nfsnobody 31333741

4.5 方法五 awk

-F  指定新的分隔符
$NF  表示最后一列

[root@nfsnobody nfsnobody]# awk -F "[,]" '{print $3,$6}' nfsnobody.txt
nfsnobody 31333741

4.6 方法六 sed

[root@nfsnobody nfsnobody]# sed 's#I am ##g' nfsnobody.txt |sed 's#,myqq is # #g'
nfsnobody 31333741

4.7 练习题

显示 /etc/passwd
第1列和第3列内容
要求格式显示为:
USER:第1列内容  UID:第3列内容
USER:第1列内容  UID:第3列内容
USER:第1列内容  UID:第3列内容
USER:第1列内容  UID:第3列内容
USER:第1列内容  UID:第3列内容

[root@nfsnobody nfsnobody]# awk -F "[:]" '{print "USER:"$1,"UID:"$3}' /etc/passwd

第5章 认识wc命令

5.1 统计信息
wc 统计文件的信息

[root@nfsnobody nfsnobody]# wc /etc/services      统计文件的信息
10774  58108 641020 /etc/services
[root@nfsnobody nfsnobody]# wc -l /etc/services   只看有多少行
10774 /etc/services

5.2 统计总数
统计出/etc目录下  以.conf 结尾的文件的数量

[root@nfsnobody nfsnobody]# find /etc/ -type f -name "*.conf" |wc -l
195

第6章 egrep

过滤出/etc/services 文件包含3306或1521两数据库端口的行的内容。
|  扩展正则表达式 egrep ==grep -E

[root@nfsnobody nfsnobody]# grep -E "3306|1521" /etc/services
mysql
3306/tcp                        #
MySQL
mysql
3306/udp                        #
MySQL
ncube-lm
1521/tcp                # nCube
License Manager
ncube-lm
1521/udp                # nCube
License Manager
[root@nfsnobody nfsnobody]# egrep "3306|1521" /etc/services
mysql
3306/tcp                        #
MySQL
mysql
3306/udp                        #
MySQL
ncube-lm
1521/tcp                # nCube
License Manager
ncube-lm
1521/udp                # nCube
License Manager