目录
1.用户的主目录中有两个文本 mail_a.txt 和 mail_b.txt,该用户想把 mail_a.txt 中的内容 追加到 mail_b.txt 文件的尾部,应该使用命令(C)
2.下面哪些命令可以不显示file1文件的所有空行?(AD)
6.下面哪个命令是用来定义 shell 的环境变量 ( D)
7.如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况,下列描述正确的是?(ABC)
8.bash中,需要将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log,以下哪些用法是正确的(AC)
9.当执行 netstat 命令,返回结果如下:编辑问预定义变量$?的返回值为(D)?
11.编写脚本:统计ps -elf 命令中每个状态出现的次数
15.遍历/data/resources/下的文件,找出大于200M的文件,判断其若以“tar”结尾,则使用rm删除;若以“log“结尾,则清空该文件。
16.假设 file.txt 内容如下,使用正则表达式完整匹配输出有效的号码:987 456-1230和(123) 456-7890
现要求使用 两种 方法将该文件中的域名截取出来,统计重复域名出现的次数,然后按次数进行降序排列,统计后的结果如下:
选择题(题目选项包含一项或者多项选择 每题4分 共40分,答错或漏答不得分)
1.用户的主目录中有两个文本 mail_a.txt 和 mail_b.txt,该用户想把 mail_a.txt 中的内容 追加到 mail_b.txt 文件的尾部,应该使用命令(C)
A cat mail_a.txt > mail_b.txt
B cat mail_a.txt &> mail_b.txt
C cat mail_a.txt >> mail_b.txt
D cat mail_a.txt << mail_b.txt
2.下面哪些命令可以不显示file1文件的所有空行?(AD)
A cat file1| grep -v “^$”
B cat file1 | tr -d ‘\n’
C sed -n ‘/^$/d’ file1
D awk ‘!/^$/{print}’ file1
3.删除文件 a.txt 中的重复行,应使用 (BC)
A uniq a.txt
B cat a.txt | uniq –c | sort –n
C cat a.txt | sort –rn | uniq
D cat a.txt | sort –nu
4.正则表达式“\.$”,会匹配(D)内容
A 任意字符结尾的行
B 含有字符“\”和“.”和“$”的行
C 含有字符“.”和“$”的行
D 点结尾的行
5.命令 free -h 执行结果如下:
[root@localhost sh]# free -h
total used free shared buffers cached
Mem: 988M 531M 457M 316K 102M 281M
-/+ buffers/cache: 146M 842M
Swap: 511M 0B 511M
按此命令执行结果,命令“y=$(free -h | grep Mem | awk '{print $4}' | cut -d M -f 1) | [ $y -ge 500 ] && echo yes || echo no”的执行结果为(B)?
A 457
B no
C yes
D 500
6.下面哪个命令是用来定义 shell 的环境变量 ( D)
A alias
B expect
C exports
D export
7.如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况,下列描述正确的是?(ABC)
A 可以使用top命令分析CPU使用,内存使用,负载等情况
B 可以使用free查看内存整体的使用情况
C 可以使用cat /proc/meminfo查看内存更详细的情况
D 可以使用 top,w,uptime 命令可以查看5min,10min,15min内的平均负载情况
8.bash中,需要将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log,以下哪些用法是正确的(AC)
A bash demo.sh &>demo.log
B bash demo.sh 2>demo.log 2>&1
C bash demo.sh >demo.log 2>&1
D bash demo.sh >demo.log 1>&2
9.当执行 netstat 命令,返回结果如下:
![](https://img-blog.csdnimg.cn/direct/79dfcad2688b49299b474faff3aa5bda.png)
问预定义变量$?的返回值为(D)?
A 0
B 1
C 11
D 12
10.执行以下程序:
程序执行之后,输出的$s 的结果是(B)?
A 5020
B 5040
C 5000
D 5050
代码实操(每题10分 共60分)
11.编写脚本:统计ps -elf 命令中每个状态出现的次数
ps -elf | awk 'NR>=2 {print $2}' | sort | uniq -c
ps -elf | awk 'NR>=2 {a[$2]++} END{for(i in a) {print a[i],i}}'
12.编写脚本:要求ping一批192.168.80.0/24网段的服务器,每台服务器ping 5个包,记录有丢包的服务器IP到drop.txt文件中,记录无丢包但平均时延大于等于50ms的服务器IP到slow.txt文件中
vim ping.sh
#!/bin/bashb
echo "有丢包的服务器:" > drop.txt
echo "时延过大的服务器:" > slow.txt
for ip in 192.168.80.{1..254}
do
{
PACKETS=$(ping -c 5 -i 0.5 -W 2 $ip | awk '/packet loss/{print $6}' | awk -F '%' '{print $1}')
AVG=$(ping -c 5 -i 0.5 -W 2 $ip | awk -F '/' '/avg/{print $5}' | awk -F '.' '{print $1}')
if [ $PACKETS -gt 0 ]; then
echo $ip >> drop.txt
continue
fi
if [ $AVG -ge 50 ]; then
echo $ip >> slow.txt
fi
}&
done
13.编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本返回状态码1;如果用户不输入密码,则统一使用默认的 123456 作为默认密码
vim add.sh
#!/bin/bash
read -p "请输入用户名: " username
if [ -z "$username" ]; then
echo "必须输入用户名"
exit 1
fi
read -p "请输入密码: " password
pass=${password:-123456}
useradd "$username"
echo "$pass" | passwd --stdin "$username"
14.使用递归函数统计出/var目录下所有可执行文件的总数
vim files.sh
#!/bin/bash
list_files() {
for f in `ls $1`
do
if [ -d "$1/$f" ]; then
list_files "$1/$f"
else
if [ -x "$1/$f" ]; then
echo "$1/$f"
fi
fi
done
}
sum=$(list_files "/var" | wc -l)
echo "/var目录下所有可执行文件的总数为:$sum"
15.遍历/data/resources/下的文件,找出大于200M的文件,判断其若以“tar”结尾,则使用rm删除;若以“log“结尾,则清空该文件。
#!/bin/bash
for i in `find /data/resources/ -size +200M `
do
case "$i" in
*.tar)
rm -rf $i
;;
*.log)
echo > $i
esac
done
16.假设 file.txt 内容如下,使用正则表达式完整匹配输出有效的号码:987 456-1230和(123) 456-7890
[root@localhost test]# cat file.txt
987-123-5430
987 456-1230
(123) 456-7890
egrep '^(\(?[0-9]{3}\)? )[0-9]{3}-([0-9]{4})$' file.txt
awk '/^(\(?[0-9]{3}\)? )[0-9]{3}-([0-9]{4})$/{print}' file.txt
sed -nr /'^(\(?[0-9]{3}\)? )[0-9]{3}-([0-9]{4})$'/p file.txt
17.有一个文件b.txt,内容如下:
[root@localhost test]# cat b.txt
http://www.baidu.com/index.html
http://www.google.com/index.html
http://www.baidu.com/get.html
http://www.baidu.com/set.html
http://www.google.com/index.html
http://www.yahoo.com.cn/put.html
现要求使用 两种 方法将该文件中的域名截取出来,统计重复域名出现的次数,然后按次数进行降序排列,统计后的结果如下:
3 www.baidu.com
2 www.google.com
1 www.yahoo.com.cn
cat b.txt |grep -o "www.*/"|tr -d /|sort |uniq -c
cat test |awk -F/ '{print $3}'|sort |uniq -c
cat test|sed -nr "s#.*(www.*)/.*#\1#p"|sort |uniq -c
cat test|cut -d"/" -f3|sort|uniq -c
awk -F/ '{servername[$3]++}; END{for(i in servername) {print i,servername[i]}}' b.txt | sort -n -r -t ' ' -k 2