2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习。

第一题:写一个脚本,用for循环实现显示/etc/init.d/functions、/etc/rc.d/rc.sysinit、/etc/fstab有多少行

#!/bin/bash

for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do

lineCount=`wc -l $fileName | cut -d‘ ‘ -f1`

echo "$fileName:$lineCount lines."

done

或者更为简洁:

#!/bin/bash

for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do

echo "$fileName:`wc -l $fileName | cut -d‘ ‘ -f1` lines."

done

这么写无疑是最简洁的。

第二题:写一个脚本,将上一题中三个文件复制到/tmp目录中,用for循环实现,分别将每个文件的最近一次修改时间改为2011年9月15日13点27分。

#!/bin/bash

for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do

cp $fileName /tmp

baseName=`basename $fileName`

touch -mt 201109151327 /tmp/$baseName

done

第三题:写一个脚本,显示/etc/passwd中第3、7和11个用户的用户名和ID号。

#!/bin/bash

for lineNo in 3 7 11;do

userInfo=`head -n $lineNo /etc/passwd | tail -1 | cut -d: -f1,3`

echo -e "User:`echo $userInfo | cut -d: -f1`\nUid:`echo $userInfo | cut -d: -f2`"

done

我自己写成如下,做了点小改动,我觉得适合我的风格,但主体框架不变。

#!/bin/bash

way=/etc/passwd

for lineNo in 3 7 11;do

echo "User name:`head -$lineNo $way | tail -1 | cut -d: -f1` UserID:`head -$lineNo $way | tail -1 | cut -d: -f3`"

done

个人感觉,马哥的第三题有些繁琐啊。

刚开始的几个toy programme,对思路启发的价值比较大。

时间: 2024-10-13 19:25:19

2014马哥Linux0217中对0214三题的解答的相关文章

2014马哥Linux0214中关于系统启动加载环境变量的顺序问题

0214中,基于CentOS6.4,马哥说交互式用户环境变量加载顺序,如下: /etc/profile-->/etc/profile..d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc 而本人做了一个实验,在以上几处都加上了echo语句,测试到底顺序是怎样的,得到了如下的结果: /etc/profile-->/etc/profile..d/*.sh-->/etc/bashrc-->~/.bashrc-->~

2014马哥Linux0218-4中shift轮替和最后一道大题

写一个脚本,使得无论脚本后跟多少参数,都能计算出参数的和: #!/bin/bash sum=0 for i in `seq 1 $#`;do let sum+=$1 shift done echo $sum 写一个脚本:使用形式如下 userinfo.sh -u username [-v{1|2}] -u选项用于指定用户,而后脚本显示用户的UID和GID; 如果同时使用了-v选项: -v后面的值如果是1,则额外显示用户的家目录路径 -v后面的值如果是2,则额外显示用户的家目录路径和shell #

2014马哥Linux0217-4中LineCount的小程序补完版

上一篇因为没学会字符测试,所以写的文件数行脚本,运行起来并不是那么完美,看完0218-1课后,修改代码成如下,基本没有不理想的状态发现了: #!/bin/bash # read -t 10 -p "Please enter a file path in 10 seconds:" fileName #超时设置成10秒 fileName=${fileName:-null} #变量默认值的设定 if [ "$fileName" == null ];then #字符测试的语

2014马哥Linux0218-4中script.sh的题目

这道题目虽然不是很难,但是如果编程不熟练的话,还是有些挑战的.在这里感谢我搜索到的这位朋友,他的解题代码给我很大的参考,他的blog是:http://sohudrgon.blog.51cto.com/3088108/1586780/ 写一个脚本,完成如下任务,其使用形式如下所示: script.sh {start|stop|restart|status} 其中: 如果参数为空,则显示帮助信息,并退出脚本: 如果参数为start,则创建文件/var/lock/subsys/script,并显示"s

2014马哥Linux0218-4前半部文件测试的题目

写一个下载程序: 1.首先判断wget是否存在,不存在就退出:有就执行下一步. 2.然后判断用户是否有wget的执行权限,如没有则退出,如有就执行下载. #!/bin/bash # url="http://172.16.0.1/centos6.5.repo" which wget &> /dev/null || exit 5 downloader=`which wget` [ -x $downloader ] || exit 6 $downloader $url 这里有一

2014年百度之星资格赛第三题Xor Sum

Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包括了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包括一个正整数 S ,之后 Zeus 须要在集合其中找出一个正整数 K ,使得 K 与 S 的异或结果最大.Prometheus 为了让 Zeus 看到人类的伟大,随即允许 Zeus 能够向人类求助.你能证明人类的智慧么? Input 输入包括若干组測试数据,每组測试数据

2016/1/12 第一题 输出 i 出现次数 第二题 用for循环和if条件句去除字符串中空格 第三题不用endwith 实现尾端字符查询

1 import java.util.Scanner; 2 3 4 public class Number { 5 6 private static Object i; 7 8 /* 9 *第一题 mingrikejijavabu中字符“i” 出现了几次,并将结果输出*/ 10 public static void main(String[] args) { 11 12 String r ="imingrikejijavabi"; 13 14 15 //第一种 截取 16 int a=

2014马哥Linux0218-1字符测试与生成交互式选项表的脚本代码

0218课里,先是一个简单的小程序,注意字符测试的使用,建议所有被测试的字符都要加引号,而在字符测试匹配模式(也可以使正则表达式)的时候,需要用双中括号,题目如下: 练习:判定所有用户是否拥有可登陆shell #!/bin/bash for userName in `cut -d: -f1 /etc/passwd`;do if [[ `grep "^$userName\>" /etc/passwd | cut -d: -f7` =~ sh$ ]]; then echo "

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文件系统管理详解之三10_05_脚本编程之八 脚本完成磁盘分区格式化20_01_DNS主从复制及区域传送04_04_grep及正则表达式01_03_操作系统基础08_02_bash脚本编程之七 case语句及脚本选项进阶14_03_bash脚本编程之十一(Linux启动流程之三) SysV服务脚本01