详细的解答:https://github.com/Zoe233/Linux/blob/master/【题目】5.Linux了解程度测试题解析.ipynb
1. 创建一个目录/data
解答: mkdir /data
2. 在/data下面建立一个文件oldboy.txt
解答:touch oldboy.txt
3. 为oldboy.txt增加内容"I am studying Linux."
解答: echo "I am studying Linux."> /data/oldboy.txt
4. 把oldboy.txt文件拷贝到/tmp目录下
解答: cp /data/oldboy.txt /tmp
5. 把/data目录移动到/root目录下
解答:mv /data /root/
6. 进入/root目录下面的/data目录,删除oldboy.txt
解答:cd /root/data;rm oldboy.txt
7. 接第6题,退出到上一级目录,删除data目录
解答: cd ..; rm /data -fr
8. 已知文件test.txt内容为:
test
liyao
oldboy
请给出打印test.txt内容时,不包含oldboy字符串的命令
解答:grep -v "oldboy" test.txt
或:head -2 test.txt
或:sed /oldboy/d test.txt; sed -e /^oldboy/d test.txt
或:awk /[^oldboy]/ test.txt
9. 请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及/oldboy/test目录
解答:mkdir -p /oldboy/test
10. 已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt直接覆盖掉/tmp/test.txt而让系统不执行是否覆盖(root权限下)。
解答:cp /mnt/test.txt /tmp/test.txt 或 /bin/cp /mnt/test.txt /tmp/test.txt
11. 只查看ett.txt文件(共100行)内第20行到第30行的内容
解答:head -30 ett.txt|tail -11
sed -n '20,30p' ett.txt
awk 'NR>=20, NR<=30 {print}' ett.txt
awk '{if (NR>19 && NR<31) print $0" "}' ett.txt
grep 25 -C 5 ett.txt (注意,25是模拟的ett.txt序列文件中第25行即25,只是显示方法。)
12. 分析图片服务日志,把日志(每个图片访问次数x图片大小的总和)排行,取top 10,也就是计算每个url的总访问大小。
解答:根据httpd服务的日志,通过awk获取访问次数和图片大小数据,并进行计算后,sort排序,取top前10.
awk '{array_num[$7]++;array_size[$7]+=$10}END{for (x in array_num) {print array_size[x],array_num[x],x}}' access_2010-12-8.log|sort -rn -kl|head -10 >1.log #数组array_num和array_size以文件名为索引分别存储文件的访问次数和文件所占带宽,然后循环数组array_num拿到文件名,根据文件名输出文件访问次数,文件所占带宽,文件名 awk '{print $7" " $10}' access_2010-12-8.log|awk '{S[$1]+=$2,S1[$1]+=1}END{for (i in S) print S[i],S1[i],i}'|sort -rn|head -10 >2.log #与方法一类似,数组S和数组S1以文件名为所有分别存储文件所占带宽和文件访问次数 cut -d '' -f 7,10 access_2010-12-8.log|sort|uniq -c|awk '{print $1*$3""$1""$2}'|sort -rnk 1|head -10 >3.log #利用cut获取文件名及其对应的大小,然后用sort和uniq获得每个文件的访问次数,再用awk获得文件所占带宽,文件访问次数,文件名,最后降序排序后,用head获得前十行数据
13. 把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件包含oldboy的字符串全部替换成oldgril。
解答:find /oldboy -type f -name "*.sh"|xargs cat|sed -i 's#oldboy#oldgril#g'