shell小测

目录

1.用户的主目录中有两个文本 mail_a.txt 和 mail_b.txt,该用户想把 mail_a.txt 中的内容 追加到 mail_b.txt 文件的尾部,应该使用命令(C)

2.下面哪些命令可以不显示file1文件的所有空行?(AD)

3.删除文件 a.txt 中的重复行,应使用 (BC)

4.正则表达式“\.$”,会匹配(D)内容

5.命令 free -h 执行结果如下:

6.下面哪个命令是用来定义 shell 的环境变量 ( D)

7.如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况,下列描述正确的是?(ABC)

8.bash中,需要将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log,以下哪些用法是正确的(AC)

9.当执行 netstat 命令,返回结果如下:​编辑问预定义变量$?的返回值为(D)?

10.执行以下程序:

代码实操(每题10分 共60分)

11.编写脚本:统计ps -elf 命令中每个状态出现的次数

12.编写脚本:要求ping一批192.168.80.0/24网段的服务器,每台服务器ping 5个包,记录有丢包的服务器IP到drop.txt文件中,记录无丢包但平均时延大于等于50ms的服务器IP到slow.txt文件中

13.编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本返回状态码1;如果用户不输入密码,则统一使用默认的 123456 作为默认密码

14.使用递归函数统计出/var目录下所有可执行文件的总数

15.遍历/data/resources/下的文件,找出大于200M的文件,判断其若以“tar”结尾,则使用rm删除;若以“log“结尾,则清空该文件。

16.假设 file.txt 内容如下,使用正则表达式完整匹配输出有效的号码:987 456-1230和(123) 456-7890

17.有一个文件b.txt,内容如下:

现要求使用 两种 方法将该文件中的域名截取出来,统计重复域名出现的次数,然后按次数进行降序排列,统计后的结果如下:


选择题(题目选项包含一项或者多项选择 每题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 命令,返回结果如下:

问预定义变量$?的返回值为(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个包,记录有丢包的服务器IPdrop.txt文件中,记录无丢包但平均时延大于等于50ms的服务器IPslow.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

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值