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语言结课前(期末考试之前)写给牛晓霞的一封信!
致尊敬的牛晓霞老师: 这是黄领衫的感想,也是想告诉你的话! 在老师说要给班里写得好的人发黄领衫的时候,我当时的想法是我很有可能拿到这份奖品的,怎么说呢,算是一种自信吧,或是对自己的态度的认可.虽然我能 ...
随机推荐
- python --- socket模块详解
socket常用功能函数: socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) ...
- JS使用默认图片代替页面上无法显示的图片
1.js方法: function replaceErrorImg(obj) { obj.src="images/common/error.bmp"; } 2.jquery绑定 $( ...
- 基于HTML5和WebGL的3D网络拓扑结构图
现在,3D模型已经用于各种不同的领域.在医疗行业使用它们制作器官的精确模型:电影行业将它们用于活动的人物.物体以及现实电影:视频游戏产业将它们作为计算机与视频游戏中的资源:在科学领域将它们作为化合物的 ...
- 使用 Newtonsoft.Json 操作 JSON 字符串
一.把实体类转化为 JSON 字符串 1. 为实体类赋值 SenderFromMQSearch senderFromMQSearch = new SenderFromMQSearch(); sende ...
- Tomcat 笔记-设置虚拟主机
通过作用虚拟主机,可以使多个不同域名的网站共存于一个Tomcat中 在tomcat的server.xml文件中添加主机名: <Host name="hostname" app ...
- LINUX 笔记-VIM常用命令整理
1.进入insert模式 o:当前行后 O:当前行前 r:替换当前字符 R:替换当前字符直到ESC 2.删除命令 #dw:删除#个word d^:删除至行尾 d$:删除至行首 3. u:撤消 ctrl ...
- [Hdu1342] Lotto
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1342 题目大意:输出6--13从小到大个数,然后按顺序输出6个数,输出所有种可能. 解题思路:这题难度 ...
- Android Studio中的Java控制台中出现乱码问题?
今天在用Android studio 中敲代码时发现控制台出不了汉字,一打汉字全是乱码的.在此特供解决方案. 在Java的工程目录build.gradle下添加如下代码: 1.新版gradle tas ...
- WebService调用(基于KSOAP2)
public static boolean getData(String param) { //WebService服务器地址 String SERVICE_URL = "http://22 ...
- LeetCode 118. Pascal's Triangle (杨辉三角)
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...