第一关课后考试:

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 第一关课后考试的更多相关文章

  1. NO16 第二关课后考试-aw-F-过滤已知的一级目录

    ·总结的经验:1.学会总结时学好运维的重要前提.2.通过案列或例子来总结一个技术点或者命令.3.画一张逻辑图,形象的卡通记忆这个知识技术点.4.通过管道过滤数据时,最好先输出结果,然后回退再使用管道看 ...

  2. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  3. Python:黑板课爬虫闯关第一关

    近日发现了[黑板课爬虫闯关]这个神奇的网页,练手爬虫非常的合适 地址:http://www.heibanke.com/lesson/crawler_ex00/ 第一关非常的简单 get 请求网址,在响 ...

  4. SQL注入之Sqli-labs系列第一关

    在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D.明小子.穿山甲等一切工具风靡至今.当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sq ...

  5. Python 爬虫闯关(第一关)

    在学习爬虫时,遇到了一个有意思的网站,这个网站设置了几个关卡,需要经过爬虫进行闯关,随着关卡的网后,难度不断增加,在闯关的过程中需要学习不同的知识,你的爬虫水平也自然随之提高. 今天我们先来第一关,访 ...

  6. Python Challenge 第一关

    偶然在网上看到这个,PYTHON CHALLENGE,利用Python语言闯关,觉得挺有意思,就记录一下. 第0关应该算个入口吧,试了好几次才试出来,没什么代码就不写了.计算一个结果出来就行. 第一关 ...

  7. sqli-labs第一关 详解

    sqli-labs第一关 方法一:手工注入 方法二:sqlmap工具 两种方式,都可以学学,顺便学会用sqlmap,也是不错的.不多说,我们开始吧 方法一: 来到第一关,图上说我们需要一个数字的参数 ...

  8. webug第一关:很简单的一个注入

    第一关:很简单的一个注入 上单引号报错 存在注入,用order  by猜列的个数 union select 出现显示位 查数据库版本,用户和当前数据库名 查表名和列名 最后,激动人心的拿flag

  9. SQL注入平台第一关,注入?id=1'不报错的问题

    第一关需要在地址栏输入id参数测试是否有注入点 我这里输入 http://localhost/sqli-labs-master/Less-1/?id=1 下一步将id参数改为?id=1' http:/ ...

随机推荐

  1. json 常用的方法

    JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 . -------  菜鸟网 1.  JSON.parse() :用于将一个 JSON 字符串转换为 JavaScrip ...

  2. python学习 —— 字符画

    代码: import os from PIL import Image WIDTH = int(250) HEIGHT = int(250/2) ascii_char = list('toahkbdp ...

  3. [PHP] PHP7已经删除了preg_replace的e修饰符

    官网提示是这样的,对/e修饰符的支持已删除.请改用preg_replace_callback()原因是/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码( ...

  4. eclispe javaw.exe in your current path的解决方法

    https://blog.csdn.net/bd2569/article/details/70576666 问题背景:解压缩下面文件夹后打开eclipse软件(是安装包,解压即可使用的那种)弹出“.. ...

  5. CentOS6.9安装MySQL(编译安装、二进制安装)

    目录 CentOS6.9安装MySQL Linux安装MySQL的4种方式: 1. 二进制方式 特点:不需要安装,解压即可使用,不能定制功能 2. 编译安装 特点:可定制,安装慢 5.5之前: ./c ...

  6. Linux之系统优化配置

    Linux系统优化配置 更新国内镜像源 国内速度快的常用更新源如下: ​ http://mirrors.sohu.com ​ http://mirrors.163.com [root@greymous ...

  7. Dockfile的详解

    Dockerfile是构建镜像的指令文件,按照dockerfile的规范分为如下几部分: FROM 基础镜像,FROM alpine:3.8(任何的一个镜像都可以作为基础镜像,主要看我们做的镜像是干嘛 ...

  8. 为何以及如何学Linux系统?

    在当今的社会中,linux用处实在是太过广泛了.现在用在服务器和嵌入式上的Linux发行版本数不胜数,桌面上linux只占1%的比例,但这不代表linux比windows和mac 做得差,实际上桌面系 ...

  9. ROS学习笔记11-写一个简单的服务和客户端(C++版本)

    本文主要来源于:http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29 写一个服务节点.在创建消息和服务中,我们创建了一 ...

  10. 使用switch编写一个购物管理系统

    在编写过程中,可能没有做到语句的精简,这个是需要解决的事. package nzcc4; import java.util.Scanner; public class Shopmain { publi ...