老男孩教育-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行的内容

创建测试环境

[root[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 对文件的内容进行修改

时间: 2024-12-11 15:31:01

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

决心书-马洪彬-老男孩教育Linux运维脱产班38期

我是马洪彬,  88年的, 来自河北保定. 之前做运维监控的时候才开始接触Linux, 感觉就像打开了另一个世界的大门.  先是买书看, 后来找视频跟着学. 然而自学的过程痛苦而低效, 新鲜感很快就没了, 渐渐开始怀疑自己是否适合走运维这条路. 可是再一想, 年龄已经不小了, 再不拼就真的没机会了. 所以辞职报了脱产班, 全身心投入学习充电! 我的目标是在学完找工作的时候, 能拿到15k+的offer, 不怕目标高, 就怕你不敢要!

老男孩教育Linux运维脱产班第46期学员赵子豪决心书

我叫赵子豪,来自河北廊坊,毕业于石家庄信息工程职业技术学院(目前实习期暂未毕业,6月份毕业). 来老男孩学习的原因是之前在大学期间看过一些老男孩老师的视频,很喜欢老男孩老师的教学思想,职场思想,教学内容也很实用,针对现在企业所需而设计. 另一方面,面临毕业,感觉自己没有一技之长,无法找到有前途的工作,所以来老男孩学习. 学完之后我的目标薪资是10K. 达到目标没有奖励,继续努力往上爬,学一门Python,非说奖励就是对得起自己的内心,没有成为啃老族.没有达不到. 保证每天学习10小时以上,课前预

老男孩教育linux运维脱产班46期决心书

我叫刘增源,来自山东省聊城市临清市.现在还没有毕业,属于实习期.来之前是菏泽职业学院计算机应用技术专业的一名大三学生.当初来我们学校做实训的时候是17年的三月份,当时我正处于对毕业后的迷茫期,来实训后感觉学这个也挺不错的,尽管当时不知道学这个未来的前途怎么样,也不知道未来的发展如何.但起码有了一个方向,实训一结束我就报名了.五个月学完后,我的目标薪资是10K吧.五个月以后,达到目标我就再来老男孩进行一下培训,至于达不到目标的后果,我暂时没有想那么多,因为人都是活在当下的,未来都是未知数,所以我想

51CTO学院老男孩教育Linux运维+顶级架构师课程攻略

51CTO学院老男孩教育Linux运维+顶级架构师课程 学习交流QQ群:384467551.390642196 老男孩教育官方网站:http://www.oldboyedu.com/ 重点推荐1 老男孩Linux高薪运维培训 课程总时长:330小时55分钟 (套餐) http://edu.51cto.com/topic/655.html 子套餐 51CTO学院Linux运维专题列表 1-老男孩Linux高薪运维入门实战 http://edu.51cto.com/course/6714.html

老男孩教育Linux运维课程是如何讲解MySQL数据库的?

老男孩专业DBA课程表如下: http://oldboy.blog.51cto.com/2561410/1951684 本博文课表即将出书<跟老男孩学习Linux运维:MySQL数据库实战>,敬请关注.

参加老男孩教育linux运维班的计划书

我叫ECCFOR,我经过老男孩教育运维班5-6个月的学习后我一定要达到的薪水目标是12K,为了达到此目标我将采取如下是个方案: 1.每天学习5个小时:上班路上1小时.下班路上1小时,回去以后3小时: 2.提前十分钟进入教室浏览课上要学的内容: 3.课上认真听讲.有问题及时记录.上课有机会马上询问: 4.下课后认真梳理老师讲解过的课程,并逐句理解实施操作: 5.课后作业抓紧一切时间完成老师留下的作业: 6.课后多想其他有经验的同学请教: 7.删除手机上其他娱乐相关视频.APP等: 8.及时调整心态

老男孩教育 &nbsp; Linux运维

我是老男孩教育运维学员苏振达,我知道在这几个月会很累但是我会坚持下去,改变自己让身边的人对我有一个全新的认识,虽然在这几个月学习会很累但是我做好了准备.我相信没有学不会的东西.压力越大,动力越大,付出才可能有收获,不付出一定没收获 我决定通过四五个月的学习,能让我学有所成找到一份好的工作,通过自己认真学习希望达到薪资8k这就是我为之奋斗的目标. 为了达到此目标我将采取如下方案: 1.每天学习最少10小时,没有周末. 2.多敲.多练.多讨论. 3.每天要按时完成作业,每天把每日的笔记整理. 4.拒

老男孩教育linux运维学习之自我介绍及决心书

自我介绍 大家好! 我叫霍达(Huo Da),现在处在毕业实习前的综合状态:没经验.没能力,但有着一个永远向上的心. 小时候的由于对于电脑的热爱,经常义务帮助附近的人选型.维修电脑等,一直持续到高中左右.在此期间也萌生出对互联网的兴趣与学习的想法.正因为有了这种想法,才会想大量的了解网络,同时也才发现互联网强大的学习资源. 我愿意学习linux相关知识,并愿意为此付诸努力. 我相信自己,更相信老男孩教育. 决心书 通过老男孩IT教育在线3期的学习,我要达到月薪 15K . 为了达到这个目标,我将

今天终于下定决心报了老男孩linux运维就业班

对linux的培训班已经观望了两年.从2010年正式接触服务器,主要还是偏硬件,自己对linux越来越感兴趣,现在工作有很多时间.学会了,自己也就多条出路. 趁自己还没老,还学得动,脑瓜还好使,自我提升,所以今天就阔出去.自己就少点网购,省点花,应该是没问题的.希望自己学有所成,