3.linux基础自建命题

linux基础自建命题

1.列出访问次数前十的ip地址

(1) last命令显示服务器上最近登录的信息,其中第三行为ip地址

[root@node ~]# last
root     pts/0       10.0.0.1         Thu Jul 8 08:57   still logged in  
root     tty1                         Thu Jul 8 08:57   still logged in  
reboot   system boot 3.10.0-862.el7.x Thu Jul 8 08:57 - 16:57 (08:00)    
root     pts/1       10.0.0.1         Wed Jul 7 20:16 - 21:32 (01:16)    
root     pts/0       10.0.0.1         Wed Jul 7 10:04 - 21:32 (11:28)    
root     pts/0       10.0.0.1         Wed Jul 7 09:48 - 10:02 (00:13)    
root     tty1                         Wed Jul 7 09:48 - 21:51 (12:03)    
reboot   system boot 3.10.0-862.el7.x Wed Jul 7 09:46 - 16:57 (1+07:10)  
root     pts/0       10.0.0.1         Wed Jul 7 09:02 - crash (00:44)    
root     tty1                         Wed Jul 7 09:02 - 09:41 (00:39)    
reboot   system boot 3.10.0-862.el7.x Wed Jul 7 09:01 - 16:57 (1+07:55)  
root     pts/0       10.0.0.1         Tue Jul 6 19:50 - 20:11 (00:20)    
root     tty1                         Tue Jul 6 19:50 - 20:15 (00:25)    
reboot   system boot 3.10.0-862.el7.x Tue Jul 6 19:49 - 20:15 (00:25)    
root     pts/0       10.0.0.1         Tue Jul 6 16:59 - crash (02:50)    
root     tty1                         Tue Jul 6 16:58 - crash (02:51)    
reboot   system boot 3.10.0-862.el7.x Tue Jul 6 16:58 - 20:15 (03:17)    
root     pts/0       10.0.0.1         Tue Jul 6 09:38 - down   (00:12)    
root     tty1                         Tue Jul 6 09:37 - 09:50 (00:13)    
reboot   system boot 3.10.0-862.el7.x Tue Jul 6 09:35 - 09:50 (00:15)    
root     pts/0       10.0.0.1         Mon Jul 5 20:59 - 21:20 (00:20)    
root     tty1                         Mon Jul 5 20:26 - 21:30 (01:03)    
reboot   system boot 3.10.0-862.el7.x Mon Jul 5 20:25 - 21:30 (01:04)    

(2) 对所得到的ip地址进行 取列操作(ip地址是第三列)

last | awk '{print$3}'

(3) 用sort排序,并 uniq- c显示重复行出现的次数

[root@node ~]# last | awk '{print$3}'|sort|uniq -c

(4) 接着用sort -r 按次数降序显示

[root@node ~]# last | awk '{print$3}'|sort|uniq -c|sort -r
    9 10.0.0.1
    7 boot
    3 Tue
    2 Wed
    2 Mon
    1 Thu
    1

(5) head -10

[root@node ~]# last | awk '{print$3}'|sort|uniq -c|sort -r | head -10

 

  1. 将ls命令移动到新建目录下并命名为kk

    3.linux基础自建命题

 

3.将互联网上的文件下载到Linux服务器,并下载文件然后删除linux里面该文件,最后改好名再上传到原本目录

 

wget -O /目录/自己起个文件名 互联网文件地址

wget -O /opt/nginx-1.21.1.tar.gz https://nginx.org/download/nginx-1.21.1.tar.gz

[root@node ~]# wget -O /opt/adc https://pics1.baidu.com/feed/c75c10385343fbf20954a0fd1f480c8864388fb7.jpeg?token=3237781f66255554854195059f202dcc
--2021-07-08 17:39:44-- https://pics1.baidu.com/feed/c75c10385343fbf20954a0fd1f480c8864388fb7.jpeg?token=3237781f66255554854195059f202dcc
正在解析主机 pics1.baidu.com (pics1.baidu.com)... 221.194.182.35, 2408:871a:5100:101::6548:c723
正在连接 pics1.baidu.com (pics1.baidu.com)|221.194.182.35|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:58994 (58K) [image/jpeg]
正在保存至: “/opt/adc”

100%[=================================================================>] 58,994     --.-K/s 用时 0.03s  

2021-07-08 17:39:44 (1.99 MB/s) - 已保存 “/opt/adc” [58994/58994])

[root@node ~]# cd /
[root@node /]# ls
bin   data etc   lib   magedu2 mnt proc run   srv test.txt usr
boot dev   home lib64 media   opt root sbin sys tmp       var
[root@node /]# cd opt
[root@node opt]# ls
adc

sz命令:上述已吧网络文件命名为adc,接下来下载到本地计算机
[root@node opt]# sz adc

删除linux里面的adc文件
[root@node opt]# rm -rf ./adc

rz命令:最后上传已改名文件,命名为adcde.jpg 。rz命令只能上传到当前位置并不支持文件夹
[root@node opt]# rz

[root@node opt]# ls
adcde.jpg

 

4.匹配student.txt中xiaoma,并过滤打印出该行上面5行及下面5行

过滤: grep  "过滤关键字"   文件路径
-v:
-E:支持多条件匹配;
-i: 忽略大小写
—A:显示匹配和它后面的n行
—B:显示匹配行和它前面的n行
-C:显示匹配行和它前后n行

grep A匹配后5行
[root@node ~]# grep -A5 xiaoma student.txt
xiaoma 100
dadad 111

匹配前后各五行
[root@node ~]# grep -C5 xiaoma student.txt
sall 91
msdao 51
djaas 11
zds 5
dawf 13
xiaoma 100
dadad 111

5.GNU GNU's Not UNIX 的缩写,1984年由 Richard Stallman 发起并创建 目标是编写大量兼容于Unix系统的*软件。

6.如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a,/testdir/dir1/y/b

mkdir

mkdir : 创建目录
-p : 忽略报错,且可以自动创建出所需的父目录
-v : 显示命令的详细操作过程
-m [mode]: 创建时直接指定权限
rmdir : 删除空目录
-p : 递归删除空目录
-v : 显示命令的详细操作过程1.2.3.4.5.6.7.

[root@node /]# mkdir -pv testdir/dir1/{x..y}/{a..b}
mkdir: 已创建目录 "testdir"
mkdir: 已创建目录 "testdir/dir1"
mkdir: 已创建目录 "testdir/dir1/x"
mkdir: 已创建目录 "testdir/dir1/x/a"
mkdir: 已创建目录 "testdir/dir1/x/b"
mkdir: 已创建目录 "testdir/dir1/y"
mkdir: 已创建目录 "testdir/dir1/y/a"
mkdir: 已创建目录 "testdir/dir1/y/b"


[root@node testdir]# mkdir -pv testdir/dir1/{x,y}/{a,b}

mkdir: 已创建目录 "testdir"
mkdir: 已创建目录 "testdir/dir1"
mkdir: 已创建目录 "testdir/dir1/x"
mkdir: 已创建目录 "testdir/dir1/x/a"
mkdir: 已创建目录 "testdir/dir1/x/b"
mkdir: 已创建目录 "testdir/dir1/y"
mkdir: 已创建目录 "testdir/dir1/y/a"
mkdir: 已创建目录 "testdir/dir1/y/b"
[root@node testdir]# ll
总用量 0
drwxr-xr-x. 4 root root 24 7月   8 19:47 dir1
drwxr-xr-x. 3 root root 18 7月   8 19:52 testdir
[root@node testdir]#

mkdir 后面执行只能用 { } ;-pv是忽略报错显示命令详细过程

 

7.排序和去重

1.排序sort、去重;
选项:
-k:指定列(默认以空格为分隔符)
-n:以number方式排序
-r:反转(从大到小)


2.去重:
uniq:
选项:
-c:count出现的次数;


[root@node ~]# sort -k 2 -n -r students.txt
xiaohong 123
XiAoniu 88
xiaojun 80
xiaoma 66
xiaowang 50
xiaoming 30
xiaohong 18
xiaohong 11
xiaohong 1


    [root@node ~]# sort -k 2 -n -r students.txt | uniq -c
1 xiaohong 123
1 XiAoniu 88
1 xiaojun 80
1 xiaoma 66
1 xiaowang 50
1 xiaoming 30
1 xiaohong 18
2 xiaohong 11
1 xiaohong 1


需求:有一个日志文件,统计每个IP出现的次数,然后将top3 打印出来;

1.先排序;
2.去重,统计;
3.取前3;

[root@node ~]# sort 1.log | uniq -c | sort -nr | head -3
153 161.35.86.181
60 180.97.165.74
42 101.72.213.150

 

8.1.统计: 统计文件有多少行: wc -l 统计文件内容中有多少行;

cat student.txt -n查看student.txt有多少行并排序

[root@node ~]# wc -l student.txt 
11 student.txt
[root@node ~]# cat student.txt
lihua 99
lili 90
lsal 90
sall 91
msdao 51
djaas 11
zds 5
dawf 13
xiaoma 100
dadad 111

[root@node ~]# cat student.txt -n
    1 lihua 99
    2 lili 90
    3 lsal 90
    4 sall 91
    5 msdao 51
    6 djaas 11
    7 zds 5
    8 dawf 13
    9 xiaoma 100
  10 dadad 111
  11
[root@node ~]#

 

Linux awk抓取IP的两种方式
ip addr show ens33 | awk -F "[ /]+" '/inet /{print $3}'

ifconfig ens33 | awk -F "[ :]+" '/inet /{print $4}'

或格式化输出所有网卡的IP

for dev in $(awk -F : '{if(NR>2)print $1}' /proc/net/dev);do printf '%+10s: ' $dev;echo $(ip addr show $dev | awk -F "[ /]+" '/inet /{print $3}'); done

 

 

 

 

 

 

 

|bash是加个管道

 

 

 

 

上一篇:unity 对象旋转,自转


下一篇:leetcode- 整数反转