经典shell面试题整理
生活随笔
收集整理的這篇文章主要介紹了
经典shell面试题整理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、取出/etc/passwd文件中shell出現的次數 問題:下面是一個/etc/passwd文件的部分內容。題目要求取出shell并統計次數,shell是指后面的/bin/bash,/sbin/nologin等,如下面/bin/bash出現12次,/sbin/nologin出現3次。 hyn:x:525:500::/home/hyn:/bin/bash ?? ljlxx:x:526:500::/home/ljlxx:/bin/bash ?? lzj:x:527:500::/home/lzj:/bin/bash ?? wfly:x:528:500::/home/wfly:/bin/bash ?? squid:x:23:23::/var/spool/squid:/sbin/nologin ?? wyj:x:529:500::/home/wyj:/bin/bash ?? qemu:x:107:107:qemu user:/:/sbin/nologin ?? radvd:x:75:75:radvd user:/:/sbin/nologin ?? dungbee:x:530:500::/home/dungbee:/bin/bash ?? mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash ?? scidb:x:531:531::/home/scidb:/bin/bash ?? postgres:x:532:532::/home/postgres:/bin/bash ?? crane:x:533:533::/home/crane:/bin/bash ?? test:x:534:534::/home/test:/bin/bash ?? hguser:x:535:535::/home/hguser:/bin/bash ? 參考答案:? cat /etc/passwd|awk -F: '{print $7}'|sort|uniq -c ? 解析: 使用awk根據冒號分割內容,打印輸出分割后的第7列,也就是shell所在列。然后調用sort命令排序并使用uniq -c統計每個shell出現的次數。 二、文件整理 問題: employee文件中記錄了工號和姓名? employee.txt: ?? 100 Jason Smith ??? 200 John Doe ??? 300 Sanjay Gupta ??? 400 Ashok Sharma bonus文件中記錄工號和工資? bonus.txt: ?? 100 $5,000 ??? 200 $500 ??? 300 $3,000 ??? 400 $1,250 要求把兩個文件合并并輸出如下 處理結果:? 400 ashok sharma $1,250 ?? 100 jason smith ?$5,000 ?? 200 john doe ?$500 ?? 300 sanjay gupta ?$3,000 ? 參考答案: paste employee.txt bonus.txt | awk '{print $1,$2,$3,$5}'|tr '[:upper:]' '[:lower:]'|sort -k 2 ? 解析: 這里用到好幾個命令,包括paste,awk,tr以及sort。paste命令用于合并多個文件的同行數據,如上面兩個文件employee和bonus調用paste后合并成 100 Jason Smith ????100 $5,000 ??? 200 John Doe ???200 $500 ??? 300 Sanjay Gupta ???300 $3,000 ??? 400 Ashok Sharma ???400 $1,250 ?? paste命令可以使用-d指定合并時加入的符號。比如paste -d : employee bonus則結果變成類似100 Jason Smith :100 $5,000 等。默認合并符號為tab符號。 awk用于提取除了tab符號的其余4列。 tr命令用于將字符串中所有大寫字符轉換為小寫字符。 sort命令對字符排序。sort -k 2表示按文件第2個域排序,這里第二個域為姓名,所以是按姓名升序排序。如果要降序排列,則要用sort -k 2r。 三、打印本機交換分區大小 問題:打印本機交換分區大小,輸出如下 Swap:1024M ? 參考答案: top -n 1|grep Swap|sed 's/k.*//'|awk '{print $1,$2/1000"M"}' ? 解析: top 命令顯示系統資源占用情況,-n 1表示只調用1次。 grep Swap選取Swap所在行。grep命令執行后結果可能如下: Swap: 16779884k total, ???????0k used, 16779884k free, ?3268200k cached ? sed命令用于字符串的一些正則匹配,這里使用了替換參數,將第1個k以及后面的字符替換成了空白。這樣,sed執行后,結果為: Swap: 16779884 ? awk命令輸出內容,對第二個參數除以1000. 四、用戶清理 問題:清除本機除了當前登陸用戶以外的所有用戶。 參考答案: kill $(who -u|grep -v `whoami`|awk '{print $6}'|sort -u) ? 解析: who -u顯示所有當前用戶。grep -v選取當前登錄用戶以外的所有用戶。awk打印用戶進程ID。sort -u會刪除相同的行。最后用kill命令終止。
轉載于:https://www.cnblogs.com/fjping0606/p/4573466.html
總結
以上是生活随笔為你收集整理的经典shell面试题整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 央视元宵晚会收视夺冠 百位央视主持人同台
- 下一篇: 黄金行情怎么看