第1章 选择
1.1 退出交互模式的 shell,应键入()
A: B:^q C:exit D:quit
1.2 下列变量名中有效的 shell 变量名是:C
-2-time _2$3 trust_no_1 2004file
1.3 在 shell 编程中关于$2 的描述正确的是 B
程序后携带了两个位数参数
宏替换
程序后面携带的第二个位置参数
携带位置参数的个数
1.4 在 shell 环境下想把‘gyyx’值赋给变量 company,下面哪个是正确的:
company = gyyx
$company=gyyx
company=‘gyyx’
company=gyyx
1.5 下面表述错误的是
n 表示程序的第 n 个参数值 $* 表示程序的所有参数个数 $$表示程序的 PID
1.6 shell 脚本中的注释符
// /**/ " " #
1.7 采用 bash 执行 shell 脚本时加上哪个参数可以跟踪执行脚本过程
-x -u -f -p
1.8 在 shell 比较运算符中,数值测试“等于则为真”的是()
-ne -ge -eq -le
第2章 填空
2.1 在 shell 编程中,如果要访问变量值,可以变量前加一个—$—符号
2.2 请说出以下符号在 bash shell 中的意义
n
?
{#aa}
2
2.3 编写 shell 程序之前必须赋予该脚本_____
2.4 Linux 系统 shell 脚本第一行需写______代表什么意义_____
第3章 简答
3.1 写一个脚本实现判断 192.168.1.0/24 网络里,当前在线的 ip 有哪些,能 ping 通则认为在线
3.2 在 shell 中变量的赋值有四种方法,其中采用 name= 的方法称:
3.3 检查 IP 地址合规,请用 shell 编写代码,列出不以 199 或 200 开头的 IP 地址,如 或
Eth1/0/1 up up 199.11.250.1
Eth1/0/2 up up 200.11.250.5
Loop0 up up(s) 199.11.250.1
Vlan1 *down down unassigned
Vlan500 down down 139.100.1.157
Vlan900 up up 140.11.250.41
egrep -o '[0-9.]{7,15}' |egrep -v '^199|^200'
3.4 通过 shell 如何删除文档中的注释和空白行。
3.5 如果在/home/pushmail 目录下不存在 leadtone 目录,则创建该目录,并将/var/sync/bin 目录下
的所有文件拷贝到 leadtone 目承下,但是不能够拷贝文件大于 1M 的文件。
3.6 写一个脚本,实现批量添加 20 个用户,用户名为 user01-20,密码 user 后面跟 5 个随机字符
3.7 对文件 test 中,
aaa 123.52
bbb 125.54
aaa 123.52
aaa 123.52
ccc 126.36
1>第一列为 aaa 的行求和;
2>对偶数行求和;
3>求文件 test 中的最大值
3
3.8 shell 脚本编程:显示 100 以内的质数
3.9 判断数字大于 500 则执行 小于等于 500 则退出脚本,并输出报错信息
3.10 脚本测试 文件,打印出每一列的累加值
1 2 3
4 5 6
7 8 9
3.11 试编写一个 Shell 程序,该程序能接收用户从键盘输入的 100 个整数,然后求出其总和、最大
值及最小值
1.1.1.1 改变bash的提示符实际上就是改变变量(C)
$HOME $PWD $PS1 $PS2
1.1.1.2 在shell脚本中,用来读取文件内各个域的内容并将其赋值给shell变量的命令是______
Fold join tr read
1.1.1.3 从后台启动进程,应在命令的结尾加上符号()
A:& B:@ C:# D:$
1.1.1.4 不是shell具有的功能和特点是()
A:管道 B:输入输出重定向 C:执行后台进程 D:处理程序命令
1.1.1.5 退出交互模式的shell,应键入()
A: B:^q C:exit D:quit
1.1.1.6 shell不仅仅是用户命令解释器,同时一种强大的编程语言,linux缺省的shell是
bash ruby PHP perl
1.1.1.7 以下函数中,和其他函数不属于一类的是
Read pread write pwrite fseek lseek
1.1.1.8 下列变量名中有效的shell变量名是:______
-2-time _2$3 trust_no_1 2004file
1.1.1.9 下列对shell变量FRUTT操作,正确的是______
为变量赋值:$FRUTT=apple 显示变量的值:fruit=apple
显示变量的值:echo F R U T T 判 断 变 量 是 否 有 值 : [ − f − − FRUTT 判断变量是否有值:[ -f -- FRUTT判断变量是否有值:[−f−−FRUTT || ]
1.1.1.10 在shell编程中关于$2的描述正确的是
程序后携带了两个位数参数 宏替换
程序后面携带的第二个位置参数 携带位置参数的个数
1.1.1.11 在shell环境下想把‘gyyx’值赋给变量company,下面哪个是正确的:
company = gyyx $company=gyyx company=‘gyyx’ company=gyyx
1.1.1.12 下面sed删除行,下面哪个脚本是错误的是
sed -e ‘/man/d’ filename sed -e ‘1,3d’ filename sed -e ‘1,/man/d’ filename sed -e ‘/man/3d’ filename
1.1.1.13 下面表述错误的是
$0表示程序的执行名字 $n 表示程序的第n个参数值
$* 表示程序的所有参数个数 $$表示程序的PID
1.1.1.14 下列代码样例中,哪个存在错误:
for filename in $(ls) do cat $filename done
for((i=0;i<10;i++)) do echo $i done
x=1 sum=0 while [ x − l e 10 ] d o l e t s u m = s u m + x -le 10 ] do let sum=sum+ x−le10]doletsum=sum+x let x=x+1 done echo $sum
for $i in 1 2 3 4 5 do echo $i done
1.1.1.15 在shell脚本中,用来读取文件内各个域的内容并将其赋值给shell变量的命令是:
Fold join tr read
1.1.1.16 shell中如何跳出当前循环继续之后的循环
break continue exit kill
1.1.1.17 shell脚本中的注释符
// /**/ " "
1.1.1.18 采用bash执行shell脚本时加上哪个参数可以跟踪执行脚本过程
-x -u -f -p
1.1.1.19 以下命令执行后,结果为()
var1=abcdedf
var2=abcded
echo “ v a r 1 ” ∣ g r e p − q “ var1” |grep -q “ var1”∣grep−q“var2” && echo “yes” ||echo “no”
无结果 语法错误 yes no
1.1.1.20 在shell比较运算符中,数值测试“等于则为真”的是()
-ne -ge -eq -le
1.1.1 填空
1.1.1.1 在shell编程中,如果要访问变量值,可以变量前加一个——符号
1.1.1.2 请说出以下符号在bash shell中的意义
$0 $n $# $? $* $$ ${#aa}
1.1.1.3 编写shell程序之前必须赋予该脚本_____
1.1.1.4 Linux系统shell脚本第一行需写______代表什么意义_____
1.1.1.5 编写shell脚本时注释符是_________
1.1.1.6 **shell命令“sed -i s/******r/ /g ”实现的是_______
1.1.2 简答
1.1.2.1 在shell中, 0 , 0, 0,n,KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,*, @ , @, @,?分别是什么含义?
1.1.2.2 统计/var/log下文件的个数。
1.1.2.3 如何将F1文件的运行结果输出到里?
1.1.2.4 写一个脚本实现判断192.168.1.0/24 网络****里,当前在线的ip有哪些,能拼通则认为在哪
1.1.2.5 根据以下信息:
IP_Address MAC_Address Interface Static
10.66.10.250 80:71:7A:33:CA:A7 br on
10.66.10.249 5C:50:15:7F:3B:F5 br on
将以上文件名称文件中IP_Address,MAC_Address, Interface三项下的内容取出来,值以“:”分割,并呈格式显示出来。注:
10.66.10.250:80:71:7A:33:CA:A7:br
10.66.10.249:5C:50:15:7F:3B:F5:br
1.1.2.6 在shell中变量的赋值有四种方法,其中采用name=的方法称:
直接复制 使用read命令 使用命令行传参 使用命令输出
1.1.2.7 编写一个脚本,5分钟检查一次日志,发现有暴力SSH破解现象的,提取此类IP地址,并去重,并按降序排序。
要求:同一个IP暴力破解超过10次,自动屏蔽IP地址,指定办公室IP地址(192.168.100.100)为可信任IP地址,不受屏蔽规则限制,以下为日志格式:
日志样式:
May 4 03:43:07 tz-monitor sshd{14003}: Failed password for root from 124.232.135.84 port 25251 ssh2
Myy 4 03:43:07 tz-monitor sshd{14082}: invalid user postgres from 124.232.135.84
1.1.2.8 检查OSPF route-ID配置,配置如下,请用shell编写代码,条件如下:检查ospf的route-id值,route-id值必须与interface LoopBack0的IP地址值相同,如果两个值不相等打印出ospf的route-id的值,并且ospf的route-id值必须以139开头,如,否则也打印出route-id的值
ofpf 100
route-id 139.11.0.1
area 0.0.0.0
network 139.11.0.1 0.0.0.0
network 140.11.0.0 0.0.0.3
network 140.11.0.8 0.0.0.3
network 140.11.0.16 0.0.0.3
network 140.11.0.24 0.0.0.3
network 140.11.0.32 0.0.0.3
interface LoopBack0
ip address 139.11.0.1 255.255.255.255
1.1.2.9 检查IP地址合规,请用shell编写代码,列出不以199或200开头的IP地址,如 或
Interface Physical Protocol IP Adderss
Eth1/0/1 up up 199.11.250.1
Eth1/0/2 up up 200.11.250.5
Loop0 up up(s) 199.11.250.1
Vlan1 *down down unassigned
Vlan500 down down 139.100.1.157
Vlan900 up up 140.11.250.41
1.1.2.10 处理以下文件内容,将域名提取并进行计数排序,如处理:
/
/
/
/
/
/
得到如下结果:
域名的出现次数 域名
3
2
1
可以使用bash/per/php任意一种
1.1.2.11 在单台服务器Linux操作系统环境下,写一行命令,将所有该机器的所有以“.“为后缀的文件,打包压缩并上传到ftp上,FTP地址为123.234.25.130的/home/bak文件夹
1.1.2.12 Linux脚本:现在要删除本机中若干文件,/root/中记录了这些文件的绝对路径,请用脚本实现。/root/内容范例:/tmp/
1.1.2.13 说出shell的种类,已经常用的shell
1.1.2.14 下面代码会输出什么:
def f(x,1=[]);
for i in range(x);
(i*i)
print 1
f(2)
f(3,[3,2,1])
f(3)
1.1.2.15 根据以下nginx日志信息格式,统计全天PV、UV及UV的前十、PV前十页面;分别列出状态码499、500、502按次数统计的前三位
36.110.86.173 - - [30/Otc2017:09:38:30 +0800] “POST /?r=tuiguang%2Fdelete HTTP/1.1” 200 385 0.036 “/?r=tuiguang%2Findex&id=535634“ “Mozilla/5.0 (windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Fecko) Chrome/55.0.2883.87 Safari/537.36” “0.68”
全天PV: 全天UV: PV前十:
UV前十: 499前三: 500前三: 502前三:
1.1.2.16 创建一个函数,能接受两个参数;
(1) 第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存位置;
(2) 如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则函数返回一个51的错误值给调用脚本
(3) 如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功,如果成功,则返回0给调用脚本,否则,返回52给调用脚本;
1.1.2.17 有一个长度为n序列,需要移除掉里面的重复元素,但是对于每种元素保留最后出现的那个。输入描述:输入包括两行
第一行为序列长度n(1≤ n≤ 50)
第二行为n个数scqucencel,以空格分隔
输出描述
输出消除重复元素之后的序列,以空格分隔,行末无空格
输入例子
100 100 100 99 99 99 100 100 100
输出例子
99 100
1.1.2.18 使用一个队列模拟一个栈,在空白处实现下面类中的方法即可。
class Queue(objec ):
defenqueue(self,item):
“’’”“入队”"""
defdequcue(self):
“”"“出队”""
测试
q = Queue()
9 enqucue (1)
输出q [1]
(4)
输出q [1,4]
()
输出14
1.1.2.19 从一个网站上面分别下载100个图片,他们的网址是 /img/ 、/img/ … /img/ 批量下载100个图片文件,并找出大于500kb的文件
1.1.2.20 一个文本文件每行都是以逗号分隔,其中第二列都是数字,请对该文件按照第二列从小到大排列。
aa,101
bb,302
cc,222
dd,44
1.1.2.21 通过shell如何删除文档中的注释和空白行。
1.1.2.22 根据要求写出linux命令
a.显示当前目录的内容
b.以详细格式显示test用户的家目录内容,包含隐藏文件
c.进入根目录
d.显示/etc/passwd文本文件的内容
e.显示/etc/passwd文件的后十行内容
1.1.2.23 用netstat统计系统当前tcp连接的各种状态的连接数
1.1.2.24 写一个脚本,实现判断10.10.10.0/24网络里,当前在线的ip有哪些。注:能ping通则认为在线。
1.1.2.25 怎么把脚本添加到系统服务里,即使用service来调用。
1.1.2.26 统计指定文件中每个单词出现的次数;如
cat /etc/fstab
/etc/fstab
UUID=94e4e384-Oace-437f-bc96-057dd64f42ee / ext4 =0 1 1
tmpfs /dev/shm tmpfs defults 0 0
1.1.2.27 练习:写一个脚本
列出如下菜单给用户
disk) show disks info;
mem) show memory info;
cpu) show cpu info;
*) quit;
提示用户给出自己的选择,而后显示对应其选择的相应系统信息
1.1.2.28 请写出一个shell脚本希望把****结构表显示出来
1.1.2.29 求出中****的waring 但是不包括waring的行
1.1.2.30 **说明以下shell 代码,所完成的功能 **
n=1
while [ $n -lt 1000 ]
do
cd /root/perl_test/testdir
touch
n=`expr $n + 1`
done
1.1.2.31 用最熟悉的脚本语言实现如下功能
如果在/home/pushmail目录下不存在leadtone目录,则创建该目录,并将/var/sync/bin目录下的所有文件拷贝到leadtone目承下,但是不能够拷贝文件长度大于1M的文件。
1.1.2.32 根据要求写出linux命令
a.显示当前目录的内容
b.以详细格式显示test用户的家目录内容,包含隐藏文件
c.进入根目录
d.显示/etc/passwd文本文件的内容
e.显示/etc/passwd文件的后十行内容
1.1.2.33 查找含有特定字符的文件
1.1.2.34 Centos操作系统历史命令记录中,执行次数最多的5条
1.1.2.35 写一个脚本,判断一个指定的脚本是否是语法错误,如果有错误,则提醒用户键入Q或者q无视错误并退出其它任何键可以通过vim打开这个指定的脚本
1.1.2.36 用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下
1.1.2.37 写一个脚本,实现批量添加20个用户,用户名为user01-20,密码user后面跟5个随机字符
1.1.2.38 统计nginx访问日志,找出访问次数前10的IP
1.1.2.39 找出在文件a中但不在文件b中的内容,用命令后编写脚本实现
1.1.2.40 对文件test中,1>第一列为aaa的行求和;2>对偶数行求和;3>求文件test中的最大值
1.1.2.41 Case语句的语法?while 语句的语法?continue命令的作用?
1.1.2.42 请写出下列shell脚本:使用for循环在/opt目录下通过随机小写10个字母加固定字符串test批量创建10个html文件,创建完成后将test全部改为test_done(for循环实现),并且html大写
1.1.2.43 在UNIX操作系统中,若用户键入的命令参数的个数为1时,执行cat $1命令;若用户键入的命令个数为2时,执行cat >>$2<$1命令,请将下面所示的shell程序的空缺部分补齐
Case (_____)in
cat $1
cat >>$2<$1
*)echo ‘defult…’
case
$#
$@
$$
$*
1.1.2.44 如何在每天23:59分时,将apache的accesslog中,访问次数最多的前10个ip以及访问量最多的10个文件保存到/var/中
1.1.2.45 写一个脚本,判断一个指定的脚本是否是语法错误。如果有错误,则提醒用户键入Q或q无视错误并退出其它任何键可以指定的脚本
1.1.2.46 shell脚本编程:求100以内的质数
1.1.2.47 如果有10个文件夹,每个文件夹都有1,000,000个url,每个url对应一个访问量,请问如何最快找出前1,000,000个访问量最高的url
1.1.2.48 创建一个shell脚本,它从用户那里接收10个数,并显示已输入的最大的数
1.1.2.49 设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。shell陈旭fileback存放在/usr/bin目录下
1.1.2.50 找出系统中父进程号为105的所有进程,并将其结束
1.1.2.51 如何从history记录中分析最近500次内执行最多的命令?如何查找当前目录90天以前的文件并将其删除?
1.1.2.52 写出命令统计当前连接到本机6379端口连接数最高的ip地址和连接个数,查看自己的ip地址,看这个ip地址所在网段都有哪些机器,任意查看此网段的另外一个ip地址有哪些端口开放了。简述tcp的几种连接状态,高并发服务器一般会遇到什么问题?
1.1.2.53 下面给出了一个shell程序,试对其行后有#(号码)形式的语句进行解释,并说明程序完成的功能
#!/bin/bash
DICNAME=ls /root |grep bak
#(1)
if [ -z “$DICNAME” ] then #(2)
mkdir /root/bak cd /root/bak #(3)
fi
YY=date +%y
MM=date +%m
DD=date +%d
#(4)
BACKETC= Y Y YY YYMM$DD_etc. #(5)
tar zcvf $BACKETC /etc #(6)
echo “fileback fiaished!”
1.1.2.54 试编写一个Shell程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值
1.1.2.55 请用自己熟悉的脚本语言,快速替换notice服务下配置文件中所有变量值为,的值为blue和pass1234 说明:配置文件的目录/opt/blue/notice/conf/
文件格式如下:
=127.0.0.1:2181
=
=jdbc:mysql://lx-db:3306/gudong
=lanxin
=OnLIDX5
1.1.2.56 会哪些编程语言?写过哪种shell脚本?请现场编写一组
1.1.2.57 判断数字大于500则执行 小于等于500则退出脚本,并输出报错信息
1.1.2.58 处理以下文件内容,将域名取出并进行计数排序
/
/
/
/
/
/
得到如下结果:
域名的出现的次数 域名
3
2
1
1.1.2.59 文件中包含很多IP地址(以及其它非IP数据),请打印出满足 其中A=172 C=130 D<=100 条件的所有IP(请用AWK实现)
1.1.2.60 请编写一个可递归创建3级hash目录的shell脚本,hash目录名分别为 a b c d e f 0 1 2 3 4 5 6 7 8 9 (请用bash实现)
1.1.2.61 统计web服务器上网络连接的各个状态(ESTABLISHED/SYN_SENT/SYN_RECV等)的个数并按倒序排列
1.1.2.62 脚本测试文件
1 2 3
4 5 6
7 8 9
打印出每一列的累加值
1.1.2.63 请在linux下写个bash shell 程序,目的如下:查找/opt/mp3目录下所有mp3后缀的文件,然后计算下每个md5值,文件名跟md5值写入新的文件文件
1.1.2.64 请写出完成下面工作的Linux shell命令或脚本
(1)查看服务器的硬盘占用量
(2)将/usr/test目录下大于100K的文件转移到/tmp目录下
(3)杀死所有启动的servicefx_asr进程
(4)假设某nginx server的日志如下:
198.24.230.194 - - [10/Oct/2015:10:23:50 +0800] “POST /asr/recognize HTTP/1.1 200 177 “-” ”-”
请查找在2015/10/10,10点这一个小时内,访问“/CheckAuth”接口的IP一共有几个,每个各访问了多少次
1.1.2.65 执行$ time sleep 2 输出如下
real 0m2.003s
user 0m0.004s
sys 0m0.000s
请说明real、user、sys三者具体代表的意思和区别
1.1.2.66 编写脚本完成以下工作
某目录下有两个文件和,文件格式为(ip username),例如:
127.0.0.1zhangsan 127.0.0…4lixiaoliu
127.0.0.1wangxiaoer 127.0.0.01lisi
127.0.0.2lisi
127.0.0.3wangwu
每个文件至少有100万行,请使用Linux命令完成下列工作
1)两个文件各自的IP数,以及总IP数
2)出现再而没有出现再的IP
3)每个username出现的次数,以及每个username对应的IP数