25道shell面試題

2021-06-29 13:42:39 字數 4502 閱讀 1339

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』 /web.log 3

、刪除每個臨時檔案的最初三行。

sed–i 『1,3d』 /tmp/*.tmp 4

、指令碼程式設計:求

100內的質數。

#!/bin/bash

i=1while[ $i -le 100 ];do

ret=1

for(( j=2;j<$i;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=$

for((i=0;i<$length;i=$((i+2 ))));do

if[ $ -le 10 ];then

mv $ /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小時執行一次

怎麼實現

、在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 "," '}' 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' 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 $shell

done 14

、編寫shell

實現自動刪除

50個賬號功能,賬號名為

stud1

至stud50

#!/bin/bash

for((i=1;i<=50;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=0for((i=1;i<=10;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 $/$_$

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 $/a$

done

三道面試題

一 給定乙個n個整數元素的陣列,元素分別為a1,a2,a3.an,每個元素分別對應乙個權重w1 小於1的float w2,w3.wn,其和為1,找出其中乙個元素ak,使所有小於ak的元素的權重之和小於1 2,所有大於ak的元素的權重之和 1 2。思路 首先將該陣列按元素值的大小進行公升序排列,同樣的...

面試題 五道面試題五

判斷出棧順序的正確性 假設每個相同元素只出現一次 include include include include using namespace std class istruesack istruesack if str2 null public bool istrue const char pu...

25期 MySQL三道常見的面試題

mysql查詢字段區不區分大小寫?答案 不區分。如何解決需要區分英文大小寫的場景 解決方案一 mysql預設的字元檢索策略 utf8 general ci,表示不區分大小寫。可以使用utf8 general cs,表示區分大小寫,也可以使用utf8 bin,表示二進位制比較,同樣也區分大小寫 注意 ...