day2--课前考试题
Linux 系统命令操作语法的格式:
命令 【参数选项】 【文件或路径】
rm -f /etc/hots
提示:
1、括号中[]表示可选,即命令的参数及路径文件是可选的;一个命令不同的功能
2、参数选项表示使用一个命令的不同功能。
1)创建一个目录/data
解答:
提示:Windows下的路径样式为C:\data\test,而linux下的路径样式为/data/test
因此/data就可以看做是c:\data,不同的是Windows系统下还有D、E等盘,Linux下就只有/,它为所有目录的顶点。
英文:make directorys缩写后就是mkdir,这就是创建目录的命令。
本题命令答案:
mkdir /data 或者cd /;mkdir data
提示:使用分号可以在一行内分隔两个命令,考试中发现很多同学把两个命令写到了一行,但是却没有加分号分隔,那样执行起来会报错的。
学生常犯的错误:把data看成了date,data是数据的意思,而date是日期的意思,这是完全不同的。
创建目录,如果文件已经存在,则会提示文件已存在,不能创建。
root@zhu-K53SJ:/# cd /;mkdir data
root@zhu-K53SJ:/# ls -ld /data
drwxr-xr-x root root 10月 : /data
root@zhu-K53SJ:/# mkdir /data #目录已经存在,则不能创建
mkdir: 无法创建目录"/data": 文件已存在
总结:
cd后跟相对路径或者绝对路径,表示进入目录。如果不跟任何东西,会进入当前用户的家目录。
相对路径概念:不从“/”开始,而是从当前目录开始。例如:data/, mnt/oldboy
绝对路径概念:从"/“开始的目录,就叫绝对路径。例如:/data/,/mnt/oldboy
2)在/data下面建立一个文件oldboy.txt
解答:
命令答案:
touch /data/oldboy.txt 或者 cd /;touch oldboy.txt
#创建文件也可以用echo等,只不过touch是专业的。
例如:echo > /data/oldboy.txt或 > /data/oldboy.txt也可以创建文件。当然还有很多可以间接创建文件的命令,如vi,cat等。见后文。
root@zhu-K53SJ:/data# ls
alex.txt oldboy.txt
root@zhu-K53SJ:/data# touch oldboy.txt
注意:touch创建文件,如果文件已经存在,则不创建文件,也不覆盖,只修改文件的时间属性(时间戳:创建时间,修改时间等等)
总结:touch:摸,触摸的意思,创建文件或更新时间戳。如果文件存在,则更新时间戳;如果文件不存在,则创建文件
3)为oldboy.txt增加内容为“I am studying linux”
解答:
法一:常规编辑方法
执行vi oldboy.txt进入vi编辑器(默认命令模式),点击a或i进入编辑模式,敲入内容I am studying linux,然后按键盘上的esc键退出编辑模式(进入命令模式),然后敲:wq保存病退出。wq解释:write quit(写入并退出),:q退出,:q!强制退出,加"!"强制退出。
此法说明:
vi 就是类似记事本一样的Linux下的常用的编辑器了,如果想功能更丰富可以用vim替代vi,vim类似高级的编辑器例如emeditor,iv/vim的内部有很多命令技术点要掌握。
下图为vi/vim的工作模式图:
法二:单行或多行文本文本插入常用命令,内容都是放到文件的尾部
echo "I am studying linux" > /data/oldboy.txt
1、如果没有oldboy.txt,会创建oldboy.txt文件;
2、如果有oldboy.txt,会清空内容,放入单引号的内容。
echo "I am studying linux." >>/data/oldboy.txt 这个在企业里面很常用:单行内容追加到文件的结尾。
实践过程:
echo "I am studying linux." >> /data/oldboy.txt 特殊的编辑文件方法,通过echo命令使用单引号把引号的内容通过>>追加到/data/oldboy.txt,注意:追加就是增加,不是覆盖,例子如下:
root@zhu-K53SJ:/data# echo "覆盖文件的信息" > oldboy.txt #单">"大于号是用来写入的,如果文件存在,则覆盖原文件的信息;不存在,则创建新的文件
root@zhu-K53SJ:/data# cat oldboy.txt
覆盖文件的信息 root@zhu-K53SJ:/data# echo "使用echo往文件里面追加信息,'>>'双大于号,是用来追加信息的" >> oldboy.txt #”>>"双引号是往文件末尾追加信息
root@zhu-K53SJ:/data# cat oldboy.txt
覆盖文件的信息
使用echo往文件里面追加信息,'>>'双大于号,是用来追加信息的
此法说明:
echo是一个打印输出内容的一个常用命令,配合">"或">>"可以为文件覆盖及追加内容,这个命令可要掌握哟。">"的意思为重定向,会清楚文件里所有以前数据,“>>”为内容追加,只在文件尾部追加需要的内容,还有一个教复杂不常用的类似命令,printf。
法三:写脚本重用,追加多行,内容都是放到文件的尾部
cat >>/data/oldboy.txt<<EOF
root@zhu-K53SJ:/data# cat >oldboy.txt #cat >oldboy.txt,然后向文件里面写入信息,按ctrl + c或d,结束输入
I am studying linux
^C
root@zhu-K53SJ:/data# cat oldboy.txt
I am studying linux
方法四:多行文本追加,可以使用cat方法,"<<"表示输入,把内容添加到尖括号的流向
root@zhu-K53SJ:/data# cat >>oldboy.txt<<EOF #EOF是追加结束符号,可以是任意追加结束符
> 还可以这昂错做吗
> 是的
> EOF
root@zhu-K53SJ:/data# cat oldboy.txt
I am studying linux
还可以这昂错做吗
是的
8、已知文件test.txt内容为:
test
liyao
oldboy
请给出打印test.txt内容时,不包含oldboy字符串的命令。
解答:
创建环境,创建一个文件,并写入信息进去,如下:
root@zhu-K53SJ:/data# cat >>test.txt<<EOF #往文件写入内容的方法
> test
> liyao
> oldboy
> EOF
grep -v oldboy test.txt 或者通过管道 cat test.txt | grep -v test.txt 不推荐,直接使用第一种即可
root@zhu-K53SJ:/data# grep -v oldboy test.txt
test
liyao
grep 过滤,grep oldboy test.txt 过滤文件中的oldboy字符串。
root@zhu-K53SJ:/data# grep oldboy test.txt #从文件test.txt过滤oldboy字符串,Linux三剑客之一。
oldboy
root@zhu-K53SJ:/data# grep od test.txt #如果文件不存在,则不能过滤
head -n 2 test.txt 读取文件的前两行
法三:
拓展:三剑客之一的sed删除方法,其实是把oldboy行删除,然后打印剩下的内容
sed '/oldboy/d' test.txt
sed -e '/oldboy/d' test.txt
root@zhu-K53SJ:/data# sed /oldboy/d test.txt
test
liyao
提示:三剑客是grep、awk、sed,他们都有过滤字符串的功能,grep最擅长,awk处理列擅长。sed擅长删除,修改,替换,添加。
9、请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及oldboy/tetst目录
解答:
mkdir -p /oldboy/test
实践过程:
root@zhu-K53SJ:/# mkdir -p /oldboy/test #递归创建目录,一般第一级目录不存在时用-p,否则报错。
root@zhu-K53SJ:/# tree /oldboy #查看目录树结果
/oldboy/
--test
1 directory,0 files
其他的方法:mkdir /oldboy /oldboy/test
如果tree命令不存在,可以使用yum install tree -y安装
10、已知/tmp目录下已经存在了test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让linux系统不提示是否覆盖(root权限下)。
解答:
建立测试数据
\cp /mnt/test.txt /tmp/ 加反斜线就不提示了
/bin/cp /mnt/test.txt /tmp/ 加命令的全路径
覆盖文件不提示,上面的两张方法,cp、mv、rm都比较危险,所以是否为了防止大家误操作,加了内容限制,让你知道执行这些指令的时候比较微信。
法三(不推荐使用):
unalias cp 取消别名
alias 查看现有的别名
别名的作用:
1)通过给危险命令加一些保护参数,防止人为误操作;
2)把很多复杂的字符串或命令变成一个简单的字符串或命令。
别名对应的命令: 别名的困惑及解决技巧:http://oldboy.blog.51cto.com/2561410/699046
alias 查看和设置别名 alias cp='cp -i' 等号后面一定要是一个命令
unalias 取消别名
别名的用途举例:
系统的例子就是最好的例子:
11、只查看ett.txt文件(100行)内20到第30行的内容(企业常见面试题)
解答:sequence==seq序列
生成ett文件
root@zhu-K53SJ:/data# seq >ett.txt #模拟环境,创建序列,1-100,写入文件中
root@zhu-K53SJ:/data# cat ett.txt #seq序列,1-100的序列 6
...
100
通过管道实现目标
root@zhu-K53SJ:/data# head - ett.txt|tail -11 #首先去前三十行,然后通过管道传给tail取后面10行 30
root@zhu-K53SJ:/data# tail -80 ett.txt|head -10 #取后面80行,通过管道传递给后面指令,取前10行,即可
21
22
23
24
25
26
27
28
29
30
法一:head -30 ett.txt |tail -10
法二(必会):
sed -n "20,30p" ett.txt 这个命令更有效率,要记住
root@zhu-K53SJ:/data# sed -n '20,30p' ett.txt
法2(锦上添花):
awk "19<NR && NR<31" ett.txt
root@zhu-K53SJ:/data# awk "19<NR && NR<31" ett.txt #NR是行,行号大于19,且小于31的内容。
法4:(锦上添花)
root@zhu-K53SJ:/data# awk '{if(NR<31&&NR>19) printf $0"\n"}' ett.txt
root@zhu-K53SJ:/data# awk '{if(NR<31&&NR>19) printf $0"\n"}' ett.txt
提示:NR是行号,&&意思是并且,两边同时成立
root@zhu-K53SJ:/data# awk "NR==30" ett.txt #打印第30行
法5:
root@zhu-K53SJ:/data# grep 20 -A 10 ett.txt
12、分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url的总访问大小【附加题,加分题】
说明:本题生产环境应用:这个功能可以用于IDC网站流量宽带很高,然后通过分析服务器日志那些元素占用流量过大,进而进行优化或裁剪该图片,压缩js等措施。
13、把/oldboy目录及其子目录下的所有一扩展名.sh结尾的文件中包含oldboy的字符串全部替换为oldgirl【附加题:加分题】
解答:
建立测试数据
root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs sed -i "s#oldboy#oldgril#g"
root@zhu-K53SJ:/# mkdir -p /oldboy/test
root@zhu-K53SJ:/# cd /oldboy
root@zhu-K53SJ:/oldboy# echo 'oldboy' > test/del.sh
root@zhu-K53SJ:/oldboy# echo 'oldboy' > test.sh
root@zhu-K53SJ:/oldboy# echo 'oldboy' > .sh
root@zhu-K53SJ:/oldboy# find -type f|xargs #查找替换,首先使用find来实现
./.sh ./test/del.sh ./test.sh
root@zhu-K53SJ:/oldboy# find -type f -name "*.sh"
./.sh
./test/del.sh
./test.sh
root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs cat #使用find先查找,通过管道来传输,管道
oldboy
oldboy
oldboy
root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs sed "s#oldboy#oldgril#g" #首先看替换成功了没有,不要急着用-i,成功了使用-i
oldgril
oldgril
oldgril
root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs sed -i "s#oldboy#oldgril#g"
root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs cat
oldgril
oldgril
oldgril
法二:
root@zhu-K53SJ:/oldboy# sed -i "s#oldboy#oldgril#g" `find /oldboy -type f -name "*.sh"`
root@zhu-K53SJ:/oldboy# find /oldboy -type f -name "*.sh"|xargs cat
oldgril
oldgril
oldgril
上面代码中,加上一对“``”(Tab键上面的反引号),使其先执行,执行的结果作为sed的参数。
相当于:root@zhu-K53SJ:/oldboy# sed -i "s#oldboy#oldgril#g" /oldboy/.sh /oldboy/test/del.sh /oldboy/test.sh 替换了所有.sh文件里面的内容
day2--课前考试题的更多相关文章
- 老男孩linux实战培训初级班第二次课前考试题
################################################################ 本文内容摘录于老男孩linux实战运维培训中心课前考试题(答案部分) ...
- linux基础:第三关课前考试题整理
1.如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r-- 为 644, 要求使用命令取得644 这样的数字. [root@server ~]# stat /etc/hosts ...
- AHA高级心血管生命支持ACLS课前自我评估测试
AHA高级心血管生命支持ACLS课前自我评估测试 答题人:a 成绩单 您的得分:17.5 分 答对题数:7 题 您的名次:47 名 问卷满分:100 分 测试题数:40 题 参与人次:47 人 ...
- Linux:课程安排、Linux简介、虚拟机安装、课前准备(常用设置和操作)
一.课程安排 1)Linux 的作用 商业服务器基本上都是 Linux: 开源软件都先支持 Linux: 大数据分析.机器学习首先选 Linux: 整个互联网地基靠Linux撑起来: Linux 系统 ...
- sql系列(基础篇)-前言 课前补充知识
前言 课前补充知识 Number(p,s) Number(p,s):数字类型,p 表示数字的有效长度(从数字的左边第 1 位不为 0 的開始算起,直到最右边的长度.取值范围 0~38 位),s 表示数 ...
- L014-第三关课前linux命令及基础知识考试手把手实战解答小节
又是一周啊,以后保持一周一个微博吧. 这是一个堂解答考试题的课,那么就以题目来展开吧! 1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这 ...
- (转)老男孩linux培训某节课前考试试题及答案分享
目录:[考试目的] ................................2[考试范围] ...............................2[答题策略] .......... ...
- 老男孩linux实战培训初级班第三次课课前考试题
################################################################ 本文内容摘录于老男孩linux实战运维培训中心考试题 如有转载,请务必 ...
- 这是C语言结课前(期末考试之前)写给牛晓霞的一封信!
致尊敬的牛晓霞老师: 这是黄领衫的感想,也是想告诉你的话! 在老师说要给班里写得好的人发黄领衫的时候,我当时的想法是我很有可能拿到这份奖品的,怎么说呢,算是一种自信吧,或是对自己的态度的认可.虽然我能 ...
随机推荐
- bzoj4033(树上染色)
树上染色 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两 ...
- 小程序解释HTML富文本的两种办法
今天写着着代码,读取数据库的内容时突然跳出"<span>.<p>. "这些HTML标签.字符,吓一跳:本来如果是写HTML.JS倒也没什么,但是我在写小程序 ...
- 设置MySQL最大连接数
<pre name="code" class="sql">在使用MySQL数据库的时候,经常会遇到这么一个问题,就是"Can not co ...
- DevOps之网络
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <网络(Network)> 关于网络的网络架构和网络模型:知识与技能的层次(知道. ...
- Oracle12C如何启动PDB数据库
在启动PDB类型的数据库之前需要用管理员账号[即:sys 或者system管理员账户登录进去CDB数据库,以下命令是在PLSQL登录进去CDB数据库的dos命令行执行的] alter pluggab ...
- LINUX 笔记-文件属性相关命令
chgrp:该命令用于改变文件所属用户组 chown:该命令用于改变文件的所有者 chmod:该命令用于改变文件的权限 -R:进行递归的持续更改,即连同子目录下的所有文件都会更改
- 【UML 建模】活动图介绍
1.活动图,即Activity Diagram,是UML中用于对系统的动态行为建模的一种常用工具,它描述活动的顺序,展现从一种活动到另一种活动的控制流.其本质上是一种流程图,着重表现从一个活动到另一个 ...
- 保存单文件为mhtml
1.F6 ,在地址栏输入 输入:chrome://flags 然后ctrl+f: 输入:mhtml 启动,重启即可保存为单文件.
- Python BDD自动化测试框架初探
1. 什么是BDD BDD全称Behavior Driven Development,译作"行为驱动开发",是基于TDD (Test Driven Development 测试驱动 ...
- nvm进行node多版本管理
写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你需要快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换: 使用nvm来 ...