共计 3022 个字符,预计需要花费 8 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下 shell 面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1、用 sed 修改 test.txt 的 23 行 test 为 tset;
sed–i‘23s/test/tset/g’test.txt
2、查看 /web.log 第 25 行第三列的内容。
sed–n‘25p’/web.log | cut –d“”–f3
head–n25 /web.log | tail –n1 | cut –d“”–f3
awk–F“”‘NR==23{print $3}’/web.log
3、删除每个临时文件的最初三行。
sed–i‘1,3d’/tmp/*.tmp
4、脚本编程:求 100 内的质数。
#!/bin/bash
i=1
while[$i -le 100];do
ret=1
for((j=2;j j++));do
if [$(($i%$j))-eq 0 ];then
ret=0
break
fi
done
if[$ret -eq 1];then
echo-n $i
fi
i=$((i+1))
done
5、晚上 11 点到早上 8 点之间每两个小时查看一次系统日期与时间,写出具体配置命令
echo1 23,1-8/2 * * * root /tmp/walldate.sh /etc/crontab
6、编写个 shell 脚本将当前目录下大于 10K 的文件转移到 /tmp 目录下
#!/bin/bash
fileinfo=($(du./*))
length=${#fileinfo[@]}
for((i=0;i $length;i=$((i+2))));do
if[${fileinfo[$i]} -le 10 ];then
mv ${fileinfo[$((i+1))]} /tmp
fi
done
7、如何将本地 80 端口的请求转发到 8080 端口,当前主机 IP 为 192.168.2.1
/sbin/iptables-t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to 192.168.2.1:8080
/sbin/iptables-t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to 8080
8、在 11 月份内,每天的早上 6 点到 12 点中,每隔 2 小时执行一次 /usr/bin/httpd.sh 怎么实现
echo 1 6-12/2 * * * root /usr/bin/httpd.sh /etc/crontab
9、在 shell 环境如何杀死一个进程?
psaux | grep | cut -f? 得到 pid
cat/proc/pid
killpid
10、在 shell 环境如何查找一个文件?
find/ -name abc.txt
11、在 shell 里如何新建一个文件?
touch~/newfile.txt
12、Linux 下面的 sed 和 awk 的编写
1)如何显示文本 file.txt 中第二大列大于 56789 的行?
awk -F , {if($2 56789){print $0}} file.txt
2)显示 file.txt 的 1,3,5,7,10,15 行?
sed -n 1p;3p;5p;7p;10p;15p file.txt
awk NR==1||NR==3||NR==5||…||NR=15{print $0} file.txt
3)将 file.txt 的制表符,即 tab,全部替换成 |
sed-i s#\t#\|#g file.txt
13、把当前目录(包含子目录)下所有后缀为“.sh”的文件后缀变更为“.shell”
#!/bin/bash
str=`find./ -name \*.sh`
fori in $str
do
mv$i ${i%sh}shell
done
14、编写 shell 实现自动删除 50 个账号功能,账号名为 stud1 至 stud50
#!/bin/bash
for((i=1;i i++));do
userdel stud$i
done
15、请用 Iptables 写出只允许 10.1.8.179 访问本服务器的 22 端口。
/sbin/iptables -A input -p tcp -dport 22 -s 10.1.8.179 -j ACCEPT
/sbin/iptables -A input -p udp -dport 22 -s 10.1.8.179 -j ACCEPT
/sbin/iptables -P input -j DROP
16、在 shell 中变量的赋值有四种方法,其中,采用 name=12 的方法称( A )。
A 直接赋值 B 使用 read 命令
C 使用命令行参数 D 使用命令的输出
17、有文件 file1
1) 查询 file1 里面空行的所在行号
grep -n ^$ file1
2) 查询 file1 以 abc 结尾的行
grep abc$ file1
3) 打印出 file1 文件第 1 到第三行
head -n3 file1
sed 3q file1
sed -n 1,3p file1
18、假设有一个脚本 scan.sh,里面有 1000 行代码,并在 vim 模式下面,请按照如下要求写入对应的指令
1)将 shutdown 字符串全部替换成 reboot
:%s/shutdown/reboot/g
2)清空所有字符
:%d
3)不保存退出
q!
19、1 到 10 数字相加,写出 shell 脚本
#!/bin/bash
j=0
for((i=1;i i++));do
j=$[j+i]
done
echo $j
20、常见 shell 有哪些?缺省的是哪个?
/bin/sh /bin/bash /bin/ash /bin/bsh /bin/csh /bin/tcsh /sbin/nologin
21、Shell 循环语句有哪些?
for while until
22、用 SHELL 模拟 LVS,脚本怎么写
/sbin/iptable -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to192.168.1.11-192.168.1.12
23、找出系统内大于 50k,小于 100k 的文件,并删除它们。
#!/bin/bash
file=`find / -size +50k -size -100k`
for i in $file;do
rm -rf $i
done
24、脚本(如:目录 dir1、dir2、dir3 下分别有 file1、file2、file2,请使用脚本将文件改为 dir1_file1、dir2_file2、dir3_file3)
#!/bin/bash
file=`ls dir[123]/file[123]`
for i in $file;do
mv $i ${i%/*}/${i%%/*}_${i##*/}
done
25、将 A 、B、C 目录下的文件 A1、A2、A3 文件,改名为 AA1、AA2、AA3. 使用 shell 脚本实现。
#!/bin/bash
file=`ls [ABC]/A[123]`
for i in $file;do
mv $i ${i%/*}/A${i#*/}
done
以上是“shell 面试题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!