共計(jì) 3022 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 shell 面試題有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、用 sed 修改 test.txt 的 23 行 test 為 tset;
sed–i‘23s/test/tset/g’test.txt
2、查看 /web.log 第 25 行第三列的內(nèi)容。
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、刪除每個(gè)臨時(shí)文件的最初三行。
sed–i‘1,3d’/tmp/*.tmp
4、腳本編程:求 100 內(nèi)的質(zhì)數(shù)。
#!/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 點(diǎn)到早上 8 點(diǎn)之間每?jī)蓚€(gè)小時(shí)查看一次系統(tǒng)日期與時(shí)間,寫(xiě)出具體配置命令
echo1 23,1-8/2 * * * root /tmp/walldate.sh /etc/crontab
6、編寫(xiě)個(gè) shell 腳本將當(dāng)前目錄下大于 10K 的文件轉(zhuǎn)移到 /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 端口的請(qǐng)求轉(zhuǎn)發(fā)到 8080 端口,當(dāng)前主機(jī) 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 月份內(nèi),每天的早上 6 點(diǎn)到 12 點(diǎn)中,每隔 2 小時(shí)執(zhí)行一次 /usr/bin/httpd.sh 怎么實(shí)現(xiàn)
echo 1 6-12/2 * * * root /usr/bin/httpd.sh /etc/crontab
9、在 shell 環(huán)境如何殺死一個(gè)進(jìn)程?
psaux | grep | cut -f? 得到 pid
cat/proc/pid
killpid
10、在 shell 環(huán)境如何查找一個(gè)文件?
find/ -name abc.txt
11、在 shell 里如何新建一個(gè)文件?
touch~/newfile.txt
12、Linux 下面的 sed 和 awk 的編寫(xiě)
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、把當(dāng)前目錄(包含子目錄)下所有后綴為“.sh”的文件后綴變更為“.shell”
#!/bin/bash
str=`find./ -name \*.sh`
fori in $str
do
mv$i ${i%sh}shell
done
14、編寫(xiě) shell 實(shí)現(xiàn)自動(dòng)刪除 50 個(gè)賬號(hào)功能,賬號(hào)名為 stud1 至 stud50
#!/bin/bash
for((i=1;i i++));do
userdel stud$i
done
15、請(qǐng)用 Iptables 寫(xiě)出只允許 10.1.8.179 訪問(wèn)本服務(wù)器的 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 使用命令行參數(shù) D 使用命令的輸出
17、有文件 file1
1) 查詢 file1 里面空行的所在行號(hào)
grep -n ^$ file1
2) 查詢 file1 以 abc 結(jié)尾的行
grep abc$ file1
3) 打印出 file1 文件第 1 到第三行
head -n3 file1
sed 3q file1
sed -n 1,3p file1
18、假設(shè)有一個(gè)腳本 scan.sh,里面有 1000 行代碼,并在 vim 模式下面,請(qǐng)按照如下要求寫(xiě)入對(duì)應(yīng)的指令
1)將 shutdown 字符串全部替換成 reboot
:%s/shutdown/reboot/g
2)清空所有字符
:%d
3)不保存退出
q!
19、1 到 10 數(shù)字相加,寫(xiě)出 shell 腳本
#!/bin/bash
j=0
for((i=1;i i++));do
j=$[j+i]
done
echo $j
20、常見(jiàn) shell 有哪些?缺省的是哪個(gè)?
/bin/sh /bin/bash /bin/ash /bin/bsh /bin/csh /bin/tcsh /sbin/nologin
21、Shell 循環(huán)語(yǔ)句有哪些?
for while until
22、用 SHELL 模擬 LVS,腳本怎么寫(xiě)
/sbin/iptable -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to192.168.1.11-192.168.1.12
23、找出系統(tǒng)內(nèi)大于 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,請(qǐng)使用腳本將文件改為 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 腳本實(shí)現(xiàn)。
#!/bin/bash
file=`ls [ABC]/A[123]`
for i in $file;do
mv $i ${i%/*}/A${i#*/}
done
以上是“shell 面試題有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!