老男孩教育-Linux运维就业班入学第一关课前测试考试题及解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老男孩教育-Linux运维就业班入学第一关课前测试考试题及解答相关的知识,希望对你有一定的参考价值。

第一题 创建一个目录 /data

[[email protected] ~]# mkdir /data

1.1 扩展知识1:

创建目录 ===== make directory  mkdir

1.2 扩展知识2:如果有一个相同的目录已存在了,会报以下错误提示

[[email protected] ~]# mkdir /data
mkdir: cannot create directory `/data‘: File exists

1.3 扩展知识3:查看 显示目录下面的内容

[[email protected] ~]# ls /data
[[email protected] ~]# ls -l /data/
total 0

1.4 扩展知识4:进入到别的目录 进入到目录 

[[email protected] ~]# cd /data/

1.5 扩展知识5:查看当前所在目录/路径(定位) 

[[email protected] data]# pwd
/data

1.6 扩展知识6:相对路径和绝对路径

1.简单-相对路径不是从根开始的路径  从当前位置开始 

              data 

              etc/hosts 

              etc/sysconfig/network-scripts/ifcfg-eth0 

2.精确-绝对路径从根开始的路径

              /data 

              /etc/hosts 

              /etc/sysconfig/network-scripts/ifcfg-eth0 


第二题 在/data下面创建文件oldboy.txt 

[[email protected] data]# touch /data/oldboy.txt
[[email protected] data]# ls -l /data/
total 0
-rw-r--r--. 1 root root 0 Sep  3 15:04 oldboy.txt



第三题 为oldboy.txt增加内容"I am studying linux."

3.1 方法一 :vi或vim

第一步:打开文件

vi /data/oldboy.txt 

第二步:编辑文件 

按i(a,o)

编辑文件,输入内容

第三步:退出编辑模式 

编程完成,按esc 退出编辑模式

第四步:保存退出

:wq (加!为强制)

:q!    强制退出不保存

:wq!   强制保存退出

其中:w的意思是write,q的意思是quit 

第五步:查看

[[email protected] ~]# cat /data/oldboy.txt 
I am studying linux.


NOTE:在Linux中vi相当于Windows中的记事本,而vim相当于Windows中的 notepad++、emeditor、subline


3.2 方法二:使用echo+追加/输出重定向

[[email protected] ~]# echo "I am studying Linux."
I am studying Linux.
[[email protected] ~]# echo " I am studying Linux.">>/data/oldboy.txt 
[[email protected] ~]# cat /data/oldboy.txt
I am studying Linux.

>> 漏斗 追加重定向 把内容追加到文件的结尾,相当于“添加” 

> 漏斗  输出重定向 先把源文件的内容清空 然后再向文件中存放内容,相当于“覆盖” 


3.3 方法三:使用cat命令,向一个文件中追加多行

cat >>/data/oldboy.txt<<EOF
I
am 
oldboy
linux
EOF


EOF的意思是:end of file 这里可以把EOF替换成任何文字,包括中文,但必须匹配使用。

结束标志之前不能有任何符号


第四题 把oldboy.txt拷贝(复制)到/tmp下。

cp命令:复制copy

[[email protected] ~]# cp /data/oldboy.txt /tmp/
[[email protected] ~]# ls -l /tmp/
total 4
-rw-r--r--. 1 root root 60 Sep  3 16:02 oldboy.txt
-rw-------. 1 root root  0 Sep  3 11:01 yum.log


扩展知识1:参数-r可以拷贝文件夹并且包括下一级的子文件夹,以及子文件夹中的子文件夹。

[[email protected] ~]# cp -r /data/  /tmp/
[[email protected] ~]# ls -l /tmp/
total 8
drwxr-xr-x. 2 root root 4096 Sep  3 16:05 data
-rw-r--r--. 1 root root   60 Sep  3 16:02 oldboy.txt
-rw-------. 1 root root    0 Sep  3 11:01 yum.log


扩展知识2:cp命令的另一个作用,备份

[[email protected] ~]# cp /data/oldboy.txt /data/oldboy.txt.bak
[[email protected] ~]# ls -l /data/
total 8
-rw-r--r--. 1 root root 60 Sep  3 15:50 oldboy.txt
-rw-r--r--. 1 root root 60 Sep  3 16:22 oldboy.txt.bak


第五题 把 /data 移动到 /root目录下面

mv命令:移动move 

[[email protected] ~]# mv /data/ /root/
[[email protected] ~]# ls -l /root/
total 48
-rw-------. 1 root root  1073 Sep  3 11:11 anaconda-ks.cfg
drwxr-x---. 2 root root  4096 Sep  3 11:30 anaconda-screenshots
drwxr-xr-x. 2 root root  4096 Sep  3 16:22 data
-rw-r--r--. 1 root root 21736 Sep  3 11:11 install.log
-rw-r--r--. 1 root root  5890 Sep  3 11:10 install.log.syslog
[[email protected] ~]# ls /data
ls: cannot access /data: No such file or directory



第六题 进入/root目录下的data目录,删除oldboy.txt文件

NOTE1:我觉得此题描述有问题,是否应改为:如何用一条命令找到/data/文件夹下所有的以.txt结尾的文件,并删除。


NOTE2:Linux中的/tmp文件夹相当于Windows中的回收站。删除文件时较为稳妥的方法是先将待删除文件用mv命令移入/tmp文件夹内,若发现操作后出现问题则可将文件恢复回原文件夹,若操作后没有问题则可将/tmp文件夹内文件彻底删除。


创建测试环境:

[[email protected] ~]# mkdir /data 
[[email protected] ~]# touch /data/oldboy.txt /data/alex.txt /data/zbz.txt

6.1 第一步:使用find命令找到文件 

[[email protected] ~]# find /root -type f -name "oldboy.txt"
[[email protected] ~]# /root/data/oldboy.txt

#find 查找位置(路径)  -type 什么类型   -name "什么名字"

-typef  file       文件

d  directory  目录 

-name "*.txt"

以.txt结尾的文件  

*表示所有


6.2 第二步:使用管道符|(find命令需要同时与|xargs配合使用)

[[email protected] data]# find /data/ -type f -name "*.txt"
/data/zbz.txt
/data/alex.txt
/data/oldboy.txt
[[email protected] data]# find -type f -name "*.txt" |xargs rm
或:
[[email protected] data]# find /data/ -type f -name "*.txt" |xargs -i mv {} /tmp/


小结:

1.rm命令:移除remove

-f参数,不需要确认直接删除

例:rm -f oldboy.txt

-r参数,删除文件夹

例:rm -rf /tmp/data/

2.find命令若配合管道符| 需要加xargs

3.管道符后不能识别“别名”,比如ll,故rm不用加-f即可无提示删除,需注意。

4.xargs的-i参数:



第七题 退出到上一级目录删除 data目录。(原来在/root/data)

[[email protected] data]# cd ..
[[email protected] ~]# rm -rf data/


扩展知识:

..   上一级目录,当前目录的上一级目录 

.    当前目录,/etc/sysconfig

例:

[[email protected] ~]# cp /tmp/oldboy.txt /etc/sysconfig  
[[email protected] ~]# cp /tmp/oldboy.txt .



第八题 请给出输出test.txt文件内容时,不包含oldboy字符串的命令

创建试验环境命令:

[[email protected] ~]# mkdir /data
> cat >/data/test.txt<<EOF
> test
> lidao
> oldboy
> EOF


8.1 方法1:使用grep 命令的-v参数进行过滤 

grep命令默认输出查找到的包含""引号内的内容的行。

[[email protected] data]# grep "oldboy" /data/test.txt 
oldboy
[[email protected] data]# grep "old" /data/test.txt 
oldboy


grep命令-v参数的作用是反转查找,即输出所有不包含""引号内的内容的行。

[[email protected] data]# grep -v "oldboy" /data/test.txt 
test
lidao


8.2 方法2:非正常方法:使用head命令 

[[email protected] data]# head -n2 /data/test.txt 
test
liyao

因-n参数太常用了,故可以把n省略掉,效果一样。

[[email protected] data]# head -2 /data/test.txt 
test
liyao


扩展知识:head命令   取出文件的  前几行 默认取  前10行

tail命令   取出文件的最后几行 默认取最后10行


8.3 方法3:使用sed命令的d参数 

[[email protected] data]# sed ‘/oldboy/d‘ test.txt 
test
liyao


扩展知识:sed命令主要作用是查找替换,d参数的作用是删除选择的行。

例:

删除空白行:

sed ‘/^$/d‘ file 

删除文件的第2行:

sed ‘2d‘ file 

删除文件的第2行到末尾所有行:

sed ‘2,$d‘ file 

删除文件最后一行:

sed ‘$d‘ file 

删除文件中所有开头是test的行:

sed ‘/^test/‘d file


8.4 方法4:使用awk命令及!

[[email protected] data]# awk ‘/oldboy/‘ test.txt 
oldboy
[[email protected] data]# awk ‘!/oldboy/‘ test.txt 
test
liyao


8.5 其他扩展方法:

[[email protected] data]# sed -n ‘/oldboy/!p‘ test.txt 
test
liyao
[[email protected] data]# grep "^[tl]" test.txt 
test
liyao


第九题 请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及/oldboy/test

使用mkdir命令的-p选项

[[email protected] /]# mkdir -p /oldboy/test


第十题 已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让系统不提示是否覆盖(root 权限下)。

10.1 方法1:cp命令前加\

[[email protected] mnt]# \cp /mnt/test.txt /tmp/test.txt


10.2 方法2:使用命令的绝对路径

[[email protected] mnt]# which cp
alias cp=‘cp -i‘
/bin/cp
[[email protected] mnt]# /bin/cp /mnt/test.txt /tmp/test.txt


第十一题 只查看ett.txt文件(共100行)内第20到第30行的内容

创建测试环境 

[[email protected] tmp]# seq 100 >ett.txt
[[email protected] tmp]# cat ett.txt


11.1 方法1:head + tail 

[[email protected] data]# head -30 ett.txt |tail -11
20
21
22
23
24
25
26
27
28
29
30

11.2 方法2:sed 

[[email protected] data]# sed  -n ‘20,30p‘ ett.txt 
20
…
30


11.3 方法3:awk 

[[email protected] data]#  awk‘NR==20‘ ett.txt 
20
[[email protected] data]#  awk‘NR==30‘ ett.txt 
30
[[email protected] data]#  awk‘NR==20,NR==30‘ ett.txt 
20
…
30


NOTE:在awk中 NR表示行号


11.4 方法4:grep

[[email protected] data]# grep -A10 "20" ett.txt 
20
…
30


NOTE:-A9  显示出grep找到的内容及接下来的9行 



老男孩教育每日一题-第125天-显示文件oldboy.txt的第20行到30行请问如何做?

http://lidao.blog.51cto.com/3388056/1961519


小结:

1.head+tail 

2.sed 取某一行 取连续的多行 

3.了解awk的方法


第十二题 分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url 的总访问大小【附加题:工作场景高难度加分题,不会的同学可以放弃不答】。

说明:本题生产环境应用:这个功能可以用于IDC 网站流量带宽很高,然后通过分析服务器日志哪些元素占用流量过大,

进而进行优化或裁剪该图片,压缩js 等措施。


本题需要输出三个指标: 【访问次数】 【访问次数*单个文件大小】 【文件名(可以带URL)】

测试数据

59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299

"http://oldboy.blog.51cto.com/static/web/column/17/index.shtml?courseId=43" "Mozilla/4.0 (compatible;

MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299

"http://oldboy.blog.51cto.com/static/web/column/17/index.shtml?courseId=43" "Mozilla/4.0 (compatible;

MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

59.33.26.105 - - [08/Dec/2010:15:44:02 +0800] "GET /static/flex/vedioLoading.swf HTTP/1.1" 200 3583

"http://oldboy.blog.51cto.com/static/flex/AdobeVideoPlayer.swf?width=590&height=328&url=/[[DYNAMIC]]/2"

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET

CLR 3.5.30729)"

124.115.4.18 - - [08/Dec/2010:15:44:15 +0800] "GET /?= HTTP/1.1" 200 46232 "-" "-"

124.115.4.18 - - [08/Dec/2010:15:44:25 +0800] "GET /static/js/web_js.js HTTP/1.1" 200 4460 "-" "-"

124.115.4.18 - - [08/Dec/2010:15:44:25 +0800] "GET /static/js/jquery.lazyload.js HTTP/1.1" 200 1627 "-" "-"


解答:暂无





第十三题 把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中,文件包含oldboy的字符串全部替换为oldgirl

考察重点:

sed命令如何进行查找替换

find命令与sed命令的配合


创建试验环境:

mkdir -p /oldboy/test

cd /oldboy

echo "oldboy">test/del.sh

echo "oldboy">test.sh

echo "oldboy">t.sh

touch oldboy.txt

touch alex.txt


检查试验环境:

[[email protected] oldboy]# find

.

./t.sh

./test.sh

./test

./test/del.sh

./alex.txt

./oldboy.txt


13.1 第一步:找出/oldboy目录及其子目录下所有以扩展名.sh结尾的文件

找出所有文件:

[[email protected] oldboy]# find /oldboy/ -type f 
/oldboy/t.sh
/oldboy/test.sh
/oldboy/test/del.sh
/oldboy/alex.txt
/oldboy/oldboy.txt

找出所有以.sh结尾的文件

[[email protected] oldboy]# find /oldboy/ -type f  -name "*.sh"
/oldboy/t.sh
/oldboy/test.sh
/oldboy/test/del.sh


13.2 第二步:如何把一个文件中的oldboy替换为oldgirl

[[email protected] oldboy]# #sed ‘s#你要找什么#替换成什么#g‘ /oldboy/t.sh 
[[email protected] oldboy]# sed ‘s#oldboy#oldgirl#g‘ /oldboy/t.sh 
oldgirl
[[email protected] oldboy]# cat /oldboy/t.sh 
oldboy

NOTE:sed命令不加-i参数的话,只修改显示到屏幕上的字符,而不修改原文件的字符。

[[email protected] oldboy]# sed -i ‘s#oldboy#oldgirl#g‘ /oldboy/t.sh 
[[email protected] oldboy]# cat /oldboy/t.sh 
oldgirl


13.3 第三步:把find命令找到的内容 传递给 sed 

[[email protected] oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed ‘s#oldboy#oldgirl#g‘
oldgirl
oldgirl
oldgirl
[[email protected] oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed ‘s#oldboy#oldgirl#g‘ -i
[[email protected] oldboy]# find /oldboy/ -type f -name "*.sh"|xargs cat 
oldgirl
oldgirl
oldgirl


NOTE:

1.find命令要与 |xargs 配合

2.sed命令如何进行查找替换

3.sed -i 对文件的内容进行修改


本文出自 “老潘Linux” 博客,请务必保留此出处http://oldpan.blog.51cto.com/1603893/1965211

以上是关于老男孩教育-Linux运维就业班入学第一关课前测试考试题及解答的主要内容,如果未能解决你的问题,请参考以下文章

Linux-测试-第一关

老男孩教育2016年linux运维在线教学课程大纲

老男孩-第一关测试

老男孩教育-第1周课前测试考试题

老男孩教育-第2周课前测试考试题

老男孩教育-第4周课前测试考试题