NO15 第一关课后考试
第一关课后考试:
1、创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写如内容:inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0
[root@localhost ~]# mkdir /data/oldboy -p ( -p #递归创建目录,一般第一级目录不存在时使用-p。否则报错。)
[root@localhost ~]# ls -ld /data/oldboy/
drwxr-xr-x 2 root root 6 May 3 10:26 /data/oldboy/
[root@localhost ~]# touch /data/oldboy/oldboy.txt
[root@localhost ~]# echo "inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0" >/data/oldboy.txt
[root@localhost ~]# cat /data/oldboy.txt
inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0
2、将题1中的oldboy.txt文件内容通过命令过滤只输出如下内容:
10.0.0.8 10.0.0.255 255.255.255.0
[root@localhost data]# awk -F "[ :]+" '{print $3,$5,$7}' oldboy.txt
10.0.0.8 10.0.0.255 255.255.255.0
[root@localhost data]# awk -F "[ :]+" '{print $3" "$5" "$7}' oldboy.txt
10.0.0.8 10.0.0.255 255.255.255.0
3、将题1中的oldboy目录移动到/tmp目录下,并将/etc/passwd文件复制到/tmp/oldboy下:
[root@localhost ~]# mv /data/oldboy /tmp
[root@localhost ~]# cp /etc/passwd /tmp/oldboy
[root@localhost ~]# ls /tmp/oldboy
oldboy.txt passwd
4、在题3的基础上使用awk取passwd文件的第10行到20行的第三列重定向到/tmp/oldboy/test.txt文件夹里:
[root@localhost oldboy]# awk 'NR>9 && NR<21' passwd
operator:x:11:0:operator:/root:/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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
[root@localhost oldboy]# awk 'NR>9 && NR<21' passwd|cat -n
1 operator:x:11:0:operator:/root:/sbin/nologin
2 games:x:12:100:games:/usr/games:/sbin/nologin
3 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
4 nobody:x:99:99:Nobody:/:/sbin/nologin
5 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
6 dbus:x:81:81:System message bus:/:/sbin/nologin
7 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
8 abrt:x:173:173::/etc/abrt:/sbin/nologin
9 libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
10 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
11 colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
[root@localhost oldboy]# awk -F ":" 'NR>9 && NR<21{print $3}' passwd
11
12
14
99
192
81
999
173
998
32
997
[root@localhost oldboy]# awk -F ":" 'NR>9 && NR<21{print $3}' passwd >test.txt
[root@localhost oldboy]# cat test.txt
11
12
14
99
192
81
999
173
998
32
997
5、在题3的基础上要求:用命令rm删除文件时,提示如下禁止使用rm的提示,并使改效果永久生效:
[root@localhost oldboy]# alias rm='echo Do not use rm command.'
[root@localhost oldboy]# ls
oldboy.txt passwd test.txt
[root@localhost oldboy]# rm test.txt
Do not use rm command. test.txt
[root@localhost oldboy]# ls /etc/profile /etc/bashrc (要rm改动永久生效要改这个俩个配置文件)
/etc/bashrc /etc/profile
[root@localhost oldboy]# echo "alias rm='echo Do not use rm command.'" >>/etc/bashrc
[root@localhost oldboy]# echo "alias rm='echo Do not use rm command.'" >>/etc/profile
[root@localhost oldboy]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='echo Do not use rm command.'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
6、在题3的基础上,删除/tmp/oldboy下除passwd以外的其他文件:
[root@localhost oldboy]# cd
[root@localhost ~]# tree /tmp/oldboy
/tmp/oldboy
├── oldboy.txt
├── passwd
└── test.txt
0 directories, 3 files
[root@localhost ~]# find /tmp/oldboy -type f ! -name "passwd" (!代表取反)
/tmp/oldboy/oldboy.txt
/tmp/oldboy/test.txt
[root@localhost ~]# find /tmp/oldboy -type f ! -name "passwd"|xargs \rm -f (由于刚才rm被别名,需加“\”转义,即转义到rm本身)
[root@localhost ~]# tree /tmp/oldboy
/tmp/oldboy
└── passwd
0 directories, 1 file
7、在题3的基础上请打印/etcpasswd文件中的第2-5行(不低于三种方法):
方法一:
[root@localhost ~]# head -5 /etc/passwd |tail -4
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
方法二:
[root@localhost ~]# sed -n '2,5p' /etc/passwd (-n代表取消默认输出)
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
方法三:
[root@localhost ~]# awk 'NR>1 && NR<6' /etc/passwd
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
8、在题3的基础上,使用命令调换passwd文件里,root位置和/bin/bash位置,即将所有的第一列和最后一列位置调换.
方法一:
$1,2... 第一,二...列以此类推。但$0:标识一行。
-F 指定分隔符(-F ":"以:为分隔。$NF是最后一列。$1,$4,$NF逗号让结果间有空格)
[root@localhost ~]# awk 'NR==1{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# awk -F ":" 'NR==1{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
/bin/bash:x:0:0:root:/root:root
[root@localhost ~]# awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd (去掉NR==1,就是把所有的行都这样显示)
方法二:
[root@localhost ~]# sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp' /etc/passwd
9、把/data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy:
先创建环境:
[root@localhost ~]# mkdir /data/3306
[root@localhost ~]# mkdir /data/3307
[root@localhost ~]# ls /data
123.txt 3306 3307 456.txt oldboy.txt
[root@localhost ~]# echo "oldgirl1" >/data/123.txt
[root@localhost ~]# echo "oldgirl1" >/data/456.txt
[root@localhost ~]# echo "oldgirl1" >/data/3306/aa.txt
[root@localhost ~]# echo "oldgirl1" >/data/3307/bb.txt
[root@localhost ~]# tree /data
/data
├── 123.txt
├── 3306
│ └── aa.txt
├── 3307
│ └── bb.txt
├── 456.txt
└── oldboy.txt
2 directories, 5 files
[root@localhost ~]# find /data -type f -name "*.txt"
/data/oldboy.txt
/data/123.txt
/data/456.txt
/data/3306/aa.txt
/data/3307/bb.txt
[root@localhost ~]# find /data -type f -name "*.txt" |xargs cat
oldgirl1
oldgirl1
oldgirl1
oldgirl1
[root@localhost ~]# find /data -type f -name "*.txt" |xargs sed 's#oldgirl#oldboy#g'
oldboy1
oldboy1
oldboy1
oldboy1
[root@localhost ~]# find /data -type f -name "*.txt" |xargs sed -i 's#oldgirl#oldboy#g' (加i生效了,结果就不会显示列在屏幕上了)
[root@localhost ~]# find /data -type f -name "*.txt" |xargs cat
oldboy1
oldboy1
oldboy1
oldboy1
10、查找/oldboy下所有7天以前以log结尾的大于1M的文件移动/tmp下:
创建环境:
[root@localhost ~]# mkdir /oldboy
[root@localhost ~]# cd /oldboy
[root@localhost oldboy]# cat /var/log/dmesg >>123.log
[root@localhost oldboy]# cat /var/log/dmesg >>123.log
[root@localhost oldboy]# cat /var/log/dmesg >>123.log
[root@localhost oldboy]# cat /var/log/dmesg >>123.log
[root@localhost oldboy]# cat /var/log/dmesg >>123.log
[root@localhost oldboy]# cat /var/log/dmesg >>123.log
[root@localhost oldboy]# ls /oldboy
123.log
[root@localhost oldboy]# 11 -h
bash: 11: command not found...
[root@localhost oldboy]# ll -h
total 960K
-rw-r--r-- 1 root root 696K Apr 1 00:16 123.log
[root@localhost oldboy]# cat 123.log >>456.log
[root@localhost oldboy]# cat 123.log >>456.log
[root@localhost oldboy]# cat 123.log >>456.log
[root@localhost oldboy]# cat 123.log >>456.log
[root@localhost oldboy]# ll -h
total 4.6M
-rw-r--r-- 1 root root 696K Apr 1 00:16 123.log
-rw-r--r-- 1 root root 2.8M Apr 1 00:17 456.log
[root@localhost oldboy]# ls -lh /oldboy (这里看到在oldboy目录下有2个文件)
total 4.6M
-rw-r--r-- 1 root root 696K Apr 1 00:16 123.log
-rw-r--r-- 1 root root 2.8M Apr 1 00:17 456.log
定义文件时间:
[root@localhost oldboy]# date -s 20180601 (系统时间后调,实际时间其实是2018-5-3)
Fri Jun 1 00:00:00 CST 2018
[root@localhost oldboy]# stat 123.log (检查文件创建时间)
File: ‘123.log’
Size: 712614 Blocks: 1392 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2706511 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-04-01 00:17:08.001906285 +0800
Modify: 2018-04-01 00:16:06.678311769 +0800
Change: 2018-04-01 00:16:06.678311769 +0800
[root@localhost oldboy]# find /oldboy -type f -name "*.log" -size +1M -mtime +7 (查找符合题目条件的文件)
/oldboy/456.log
[root@localhost oldboy]# find /oldboy -type f -name "*.log" -size +1M -mtime +7 -exec mv {} /tmp \; (没有报错就是最好的消息,哈哈)
[root@localhost oldboy]# ls -lh /tmp (查看/tmp下是否有456.log文件)
total 3.6M
-rw-r--r-- 1 root root 2.8M Apr 1 00:17 456.log
十一、什么是Linux的运行级别,请描述Linux的运行级别不同数字的含义(附加题):
Default runlevel.The runlevels used are:
0-halt(Do NOT set initdefault to this) 关机。
1-Single user mode 单用户状态,需要维护服务器时用,比如密码丢失。
2-Multiuser,without NFS(The same as 3,if you not have networking) 多用户模式。
3-Full multiuser mode 完整多用户模式,命令行模式.工作环境一般用3级别。
4-unused 没有使用,预留的。
5-Xll 带桌面的模式。
6-reboot (Do NOT set initdefault to this) 重启。
查看当前Linux运行模式:
[root@localhost ~]# runlevel
N 5
运行级别是可以切换的:
[root@localhost ~]# init 输入数字0-6,就切换到你要的模式。
十二、请描述buffer和cache的区别(附加题):
写入数据到内存里,这个数据的内存空间成为缓冲区:buffer。写入缓冲区。
从内存读取数据,这个存数据的内存空间成为缓存区:cache。内存缓冲区。
十三、下列字符在Linux里代表的意义:
1 >或l> #输出重定向:把前面输出的东西输入到后面的文件中,会清楚文件原有内容。
2 >>或l>> #追加重定向:吧前面输出的东西追加到后面的文件尾部,不会清除文件原有内容。
3 0<或< #输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名。
4 0<<或<< #追加输入重定向:后面跟字符串,用来表示“输入结束”,也可用ctrl+d来结束输入。
5 2> #错误重定向:把错误信息输入到后面的文件中,会删除文件原有内容。
6 2>> #错误追加重定向:把错误信息追加到后面的文件中,不会删除文件原有内容。
7 * #通配符,代表所有。
8 | #表示管道
9 .. #上一级目录
10 . #当前目录
11 = #linux里 一个=号是赋值的意思,俩个==号才是等于的意思
12 / #在linux里代表根,所有目录的顶点,也是路径的分隔符。
13 ; #命令的分隔符
14 {} #生成字符或数字序列,类似seq,一般配合echo等命令使用。find里的{}意思是前面命令的结果。
[root@localhost ~]# rm -fr /data
[root@localhost ~]# mkdir /data/{3306,3307}/data -p
[root@localhost ~]# tree /data
/data
├── 3306
│ └── data
└── 3307
└── data
4 directories, 0 files
15 ! #一、!+字母 :表示调出最近一次以此字母开头的命令。
二、!!:表示使用最近一次操作的命令。
三、!+数字:表示调出历史中的那一个命令。
178 cd /data
179 mkdir /data/{3306.3307}/data -p
181 history
[root@localhost ~]# !178
cd /data
四、取反(find,shell编程)比如find一个文件,加!就是列出除了find的哪一个以外的所有文件。
[root@localhost data]# cd /oldboy
[root@localhost oldboy]# ll
total 8
-rw-r--r--. 1 root root 0 Apr 25 17:02 a
-rw-r--r--. 1 root root 0 Apr 25 17:02 b
-rw-r--r--. 1 root root 0 Apr 25 17:02 c.txt
drwxr-xr-x. 3 root root 29 Apr 25 17:19 test
-rw-r--r--. 1 root root 7 Apr 25 17:19 test.sh
-rw-r--r--. 1 root root 7 Apr 25 17:19 t.sh
[root@localhost oldboy]# find /oldboy -type f -name "test.sh"
/oldboy/test.sh
[root@localhost oldboy]# find /oldboy -type f ! -name "test.sh" (!取反向结果)
/oldboy/test/del.sh
/oldboy/.sh
/oldboy/t.sh
/oldboy/a
/oldboy/b
/oldboy/c.txt
16 ~ #当前用户的家目录。
17 - #用户上一次所在的目录。由OLDPWD变量控制。
cd - :回到上一次的目录。
18 \ #转义字符,让有意义的字符,脱掉它代表的意义。例如:正则里$表示以...结尾,可以用\$表示$符号本身。
19 && #并且,and。
NO15 第一关课后考试的更多相关文章
- NO16 第二关课后考试-aw-F-过滤已知的一级目录
·总结的经验:1.学会总结时学好运维的重要前提.2.通过案列或例子来总结一个技术点或者命令.3.画一张逻辑图,形象的卡通记忆这个知识技术点.4.通过管道过滤数据时,最好先输出结果,然后回退再使用管道看 ...
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...
- Python:黑板课爬虫闯关第一关
近日发现了[黑板课爬虫闯关]这个神奇的网页,练手爬虫非常的合适 地址:http://www.heibanke.com/lesson/crawler_ex00/ 第一关非常的简单 get 请求网址,在响 ...
- SQL注入之Sqli-labs系列第一关
在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D.明小子.穿山甲等一切工具风靡至今.当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sq ...
- Python 爬虫闯关(第一关)
在学习爬虫时,遇到了一个有意思的网站,这个网站设置了几个关卡,需要经过爬虫进行闯关,随着关卡的网后,难度不断增加,在闯关的过程中需要学习不同的知识,你的爬虫水平也自然随之提高. 今天我们先来第一关,访 ...
- Python Challenge 第一关
偶然在网上看到这个,PYTHON CHALLENGE,利用Python语言闯关,觉得挺有意思,就记录一下. 第0关应该算个入口吧,试了好几次才试出来,没什么代码就不写了.计算一个结果出来就行. 第一关 ...
- sqli-labs第一关 详解
sqli-labs第一关 方法一:手工注入 方法二:sqlmap工具 两种方式,都可以学学,顺便学会用sqlmap,也是不错的.不多说,我们开始吧 方法一: 来到第一关,图上说我们需要一个数字的参数 ...
- webug第一关:很简单的一个注入
第一关:很简单的一个注入 上单引号报错 存在注入,用order by猜列的个数 union select 出现显示位 查数据库版本,用户和当前数据库名 查表名和列名 最后,激动人心的拿flag
- SQL注入平台第一关,注入?id=1'不报错的问题
第一关需要在地址栏输入id参数测试是否有注入点 我这里输入 http://localhost/sqli-labs-master/Less-1/?id=1 下一步将id参数改为?id=1' http:/ ...
随机推荐
- Java基础 -3.4
反码(~) 在计算机中,负数以其正值的补码形式表达. 什么叫补码呢?这得从原码,反码说起. 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码. 比如 00000000 00000000 000 ...
- 【PAT甲级】1017 Queueing at Bank (25 分)
题意: 输入两个正整数N,K(N<=10000,k<=100)分别表示用户的数量以及银行柜台的数量,接下来N行输入一个字符串(格式为HH:MM:SS)和一个正整数,分别表示一位用户到达银行 ...
- SpringCloud+Eureka+Feign+Ribbon的简化搭建流程,加入熔断,网关和Redis缓存[2]
目录 前提:本篇是基于 SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习[1] 的修改与拓展 1.修改consumer的CenterFeign.java,把返 ...
- python多线程采集图片
cmd中运行 >python untitled2.py 图片的网站 import requests import threading from bs4 import BeautifulSo ...
- 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告
实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...
- 病毒[POI2000](AC自动机+搜索)
题目链接:病毒[POI2000] 我们假设已经有一个无限长的串满足要求,那如果我们拿它去匹配会发生什么? 它会一直在Trie树和fail树上转圈,一定经过根节点且不会经过病毒字符串结束的节点. 所以如 ...
- java并发之CopyOnWirteArrayList
java并发之CopyOnWirteArrayList CopyOnWirteArrayList的实现 它用了ReentrantLock保证了add,set,remove操作的安全,同时使用volat ...
- web页面的JS部分乱码了!!
在引用的地方给出编码即可 <script type='text/javascript' src='/zbjc/resources/normal/index_page.js' charset=&q ...
- Redis详解(二)——AOF
Redis详解(二)--AOF 前言 RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严格的需求 ...
- 【Go语言系列】2.1、Go语言基本程序结构:注释
注释在程序中的作用是对程序进行注解和说明,便于对源码的阅读.在源码中适当地添加注释,能够提高源码的可读性. Go语言的注释主要分成两类,分别是单行注释和多行注释. 单行注释: //单行注释 多行注释: ...