shell编程练习题
- 求2个数之和
- 计算1-100的和
- 将一目录下所有的文件的扩展名改为bak
- 编译当前目录下的所有.c文件:
- 打印root可以使用可执行文件数,处理结果: root's bins: 2306
- 打印当前sshd的端口和进程id,处理结果: sshd Port&&pid: 22 5412
- 输出本机创建20000个目录所用的时间,处理结果:
real 0m3.367s
user 0m0.066s
sys 0m1.925s
- 打印本机的交换分区大小,处理结果: Swap:1024M
- 文本分析,取出/etc/password中shell出现的次数
第一种方法结果:
4 /bin/bash
1 /bin/sync
1 /sbin/halt
31 /sbin/nologin
1 /sbin/shutdown
第二种方法结果:
/bin/sync 1
/bin/bash 1
/sbin/nologin 30
/sbin/halt 1
/sbin/shutdown 1
- 文件整理,employee文件中记录了工号和姓名, bonus文件中记录工号和工资要求把两个文件合并并输出如下,处理结果:(提示join)
400 ashok sharma $1,250
100 jason smith $5,000
200 john doe $500
300 sanjay gupta $3,000
employee.txt:
100 Jason Smith
200 John Doe
300 Sanjay Gupta
400 Ashok Sharma
bonus.txt:
100 $5,000
200 $500
300 $3,000
400 $1,250
- 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录。
- 编写shell脚本获取本机的网络地址。
- 编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下
- 编写一个名为myfirstshell.sh的脚本,它包括以下内容。
a) 包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的。
b) 问候用户。
c) 显示日期和时间。
d) 显示这个月的日历。
e) 显示您的机器名。
f) 显示当前这个操作系统的名称和版本。
g) 显示父目录中的所有文件的列表。
h) 显示root正在运行的所有进程。
i) 显示变量TERM、PATH和HOME的值。
j) 显示磁盘使用情况。
k) 用id命令打印出您的组ID。
m) 跟用户说“Good bye”
- 文件移动拷贝,有m1.txt m2.txt m3.txt m4.txt,分别创建出对应的目录,m1 m2 m3 m4 并把文件移动到对应的目录下。
- root用户今天登陆了多长时间
- 终端输入一个文件名,判断是否是设备文件
- 统计IP访问:要求分析apache访问日志,找出访问页面数量在前100位的IP数。日志大小在78M左右。以下是apache的访问日志节选
202.101.129.218 - - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065 HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
- 设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
- 设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30,并设置密码为对应的stdxx。
- 编写shell程序,实现自动删除30个账号的功能。账号名为std01至std30。
- 用户清理,清除本机除了当前登陆用户以外的所有用户
- 设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名,为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
- 对于一个用户日志文件,每行记录了一个用户查询串,长度为1-255字节,共几千万行,请排出查询最多的前100条。 日志可以自己构造> 。 (提示:awk sort uniq head)
- 编写自己的ubuntu环境安装脚本
- 编写服务器守护进程管理脚本。