早教吧作业答案频道 -->其他-->
帮忙写几个简单的Unixshell程序啊.懂的来写下!懂一个就写一个嘛,不一定全写3、请解释以下命令完成了什么功能?1)%exportPATH="$PATH:/usr/games"2)%cut-d;-f2/home/abc.data4、使用cat和重定向命令
题目详情
帮忙写几个简单的Unix shell程序啊.懂的来写下!
懂一个就写一个嘛,不一定全写
3、请解释以下命令完成了什么功能?
1)%export PATH="$PATH:/usr/games"
2)%cut -d;-f 2 /home/abc.data
4、使用cat和重定向命令实现建立1个文件,然后复制文件,再在文件的末尾添加内容.
5、为便于系统管理员对磁盘分配的管理,请编写一段B-shell程序,当文件系统/home占用空间改变时给出相应的信息提示.要求/home占用量在系统磁盘中为:
1)小于50%时,提示“用户文件系统磁盘使用负荷量小”.
2)大于50%,小于90%时,提示“用户文件系统磁盘使用负荷量正常”.
3)大于等于90%时,提示“用户文件系统磁盘使用负荷量偏大”.
6、使用for循环语句编写一段B-shell程序,完成显示用户注册目录下的a_sub,b_sub子目录下的所有C程序文件及其目标文件的列表
7、假设score.txt文件中保存了三个班级的学生考试成绩,请编写一段shell程序计算每个班级的学生人数与平均分.
懂一个就写一个嘛,不一定全写
3、请解释以下命令完成了什么功能?
1)%export PATH="$PATH:/usr/games"
2)%cut -d;-f 2 /home/abc.data
4、使用cat和重定向命令实现建立1个文件,然后复制文件,再在文件的末尾添加内容.
5、为便于系统管理员对磁盘分配的管理,请编写一段B-shell程序,当文件系统/home占用空间改变时给出相应的信息提示.要求/home占用量在系统磁盘中为:
1)小于50%时,提示“用户文件系统磁盘使用负荷量小”.
2)大于50%,小于90%时,提示“用户文件系统磁盘使用负荷量正常”.
3)大于等于90%时,提示“用户文件系统磁盘使用负荷量偏大”.
6、使用for循环语句编写一段B-shell程序,完成显示用户注册目录下的a_sub,b_sub子目录下的所有C程序文件及其目标文件的列表
7、假设score.txt文件中保存了三个班级的学生考试成绩,请编写一段shell程序计算每个班级的学生人数与平均分.
▼优质解答
答案和解析
3.
1).把PATH 变量导出来,其实就是为了给后面的shell子程序使用,在这里其实相当于在原有的PATH基础上添加了一个/usr/games路径.
2).从文件 /home/abc.data里面获取第2列,以分号(;)作为列分隔符,d代表分隔符(delimer),f代表字段(field)后面跟着具体的那一个字段,或者字段范围,如-f2-5就是截取第2列到第5列的内容
4.假设原有文件为a,那么可以如下方法做:
cat a>b,创建了b文件
cp b c,复制b文件,生成c文件
添加内容,vi c进去可以了
5.这个要根据(df)命令具体执行情况来进行编码,比如我的系统执行情况如下:
[u@H /billing/user/xufc]$df -vk /home
/home (/dev/vg00/lvol5 ) :130104 total allocated Kb
124288 free allocated Kb
5816 used allocated Kb
5 % allocation used
[u@H /billing/user/xufc]$
那么就可以编写如下脚本:
#!/bin/bash
Used=`df -vk /home|grep "allocation used"|awk '{print $1}'`
if [ $Used -gt 90 ]
then
\x09echo "用户文件系统磁盘使用负荷量偏大"
else
\x09if [ $RL -gt 50 ]
\x09 then
\x09\x09echo "用户文件系统磁盘使用负荷量正常"
else
\x09\x09echo "用户文件系统磁盘使用负荷量小"
\x09fi
fi
6.先用find(或其他命令组合如ls xxx|grep xxx)找到相关c文件和目标文件,然后for循环打印出来
#!/bin/bash
#查找a_sub下此文件及其目标文件
afile=`find /$HOME/a_sub/ -name "*.c" -o -name "*.o"`
bfile=`find /$HOME/b_sub/ -name "*.c" -o -name "*.o"`
#合并找到的文件到cfile中
cat afile bfile>cfile
for i in ${cfile}
do
\x09echo $i
done
7.我仿照了个数据,请参考脚本和结果:
[u@H /billing/user/xufc/project]$cat 1.txt
班级 数学 语文
A 20 90
A 30 80
A 40 60
B 40 50
B 60 40
C 90 30
C 80 70
C 70 40
C 60 30
[u@H /billing/user/xufc/project]$./statistic.sh
班级 数学 语文
A 30 76.6667
B 50 45
C 75 42.5
[u@H /billing/user/xufc/project]$cat statistic.sh
#!/usr/bin/ksh
#输出文件头
sed -n '1p' 1.txt>outfile
#计算出班级
ban=`sed -n '2,$p' 1.txt|cut -d" " -f1 |sort -u`
for i in ${ban}
do
grep $i 1.txt>tmpfile
#列统计
awk '{count=count+1;sum=sum+$2;sum2=sum2+$3}END{print $1"\t"sum/count"\t"sum2/count}' tmpfile>>outfile
done
#把结果打印到屏幕上面
cat outfile
[u@H /billing/user/xufc/project]$
1).把PATH 变量导出来,其实就是为了给后面的shell子程序使用,在这里其实相当于在原有的PATH基础上添加了一个/usr/games路径.
2).从文件 /home/abc.data里面获取第2列,以分号(;)作为列分隔符,d代表分隔符(delimer),f代表字段(field)后面跟着具体的那一个字段,或者字段范围,如-f2-5就是截取第2列到第5列的内容
4.假设原有文件为a,那么可以如下方法做:
cat a>b,创建了b文件
cp b c,复制b文件,生成c文件
添加内容,vi c进去可以了
5.这个要根据(df)命令具体执行情况来进行编码,比如我的系统执行情况如下:
[u@H /billing/user/xufc]$df -vk /home
/home (/dev/vg00/lvol5 ) :130104 total allocated Kb
124288 free allocated Kb
5816 used allocated Kb
5 % allocation used
[u@H /billing/user/xufc]$
那么就可以编写如下脚本:
#!/bin/bash
Used=`df -vk /home|grep "allocation used"|awk '{print $1}'`
if [ $Used -gt 90 ]
then
\x09echo "用户文件系统磁盘使用负荷量偏大"
else
\x09if [ $RL -gt 50 ]
\x09 then
\x09\x09echo "用户文件系统磁盘使用负荷量正常"
else
\x09\x09echo "用户文件系统磁盘使用负荷量小"
\x09fi
fi
6.先用find(或其他命令组合如ls xxx|grep xxx)找到相关c文件和目标文件,然后for循环打印出来
#!/bin/bash
#查找a_sub下此文件及其目标文件
afile=`find /$HOME/a_sub/ -name "*.c" -o -name "*.o"`
bfile=`find /$HOME/b_sub/ -name "*.c" -o -name "*.o"`
#合并找到的文件到cfile中
cat afile bfile>cfile
for i in ${cfile}
do
\x09echo $i
done
7.我仿照了个数据,请参考脚本和结果:
[u@H /billing/user/xufc/project]$cat 1.txt
班级 数学 语文
A 20 90
A 30 80
A 40 60
B 40 50
B 60 40
C 90 30
C 80 70
C 70 40
C 60 30
[u@H /billing/user/xufc/project]$./statistic.sh
班级 数学 语文
A 30 76.6667
B 50 45
C 75 42.5
[u@H /billing/user/xufc/project]$cat statistic.sh
#!/usr/bin/ksh
#输出文件头
sed -n '1p' 1.txt>outfile
#计算出班级
ban=`sed -n '2,$p' 1.txt|cut -d" " -f1 |sort -u`
for i in ${ban}
do
grep $i 1.txt>tmpfile
#列统计
awk '{count=count+1;sum=sum+$2;sum2=sum2+$3}END{print $1"\t"sum/count"\t"sum2/count}' tmpfile>>outfile
done
#把结果打印到屏幕上面
cat outfile
[u@H /billing/user/xufc/project]$
看了 帮忙写几个简单的Unixsh...的网友还看了以下:
1米的五分之三和几米的五分之一相等3千克的四分之一和1千克的( )相等。 2020-05-13 …
5米的九分之一和1米的( )相等,1小时的( )和2小时的三分之一相等.如题 2020-05-16 …
5米的八分之一和1米的几分之几相等?1时的几分之几和2时的三分之一相等? 2020-05-16 …
1个十和6个一合起来是(),3个一和1个十合起来是(),15里面有()个1和()个10,18里面有 2020-05-17 …
谁会这道题:3个一和1个十合起来是3个一和1个十合起来是(). 2020-05-17 …
(1)3个一和1个十合起来是().(2)12的个位上数是(),表示(),十位上的数字是(),表示( 2020-05-17 …
我是由3个一和1个十合起来的,2提我的十位上是1个位上是9? 2020-05-17 …
由5个一、6个十分之一、7个百分之一和1个千分之一组成的小数是,它的计数单位是,它有个这样的计数单 2020-07-31 …
一和1的区别?是不是一个是汉字一个是阿拉阿伯数字? 2020-12-28 …
判断对错:1.分数乘整数的意义与整数乘法的意义相同.()2.2千克的三分之一和1千克的三分之二同样重 2021-01-26 …