文章里面的面试题目都是从网络上忙摘录下来的部分有做的会贴出答案,没有做的,我就空着,如果你们有做出来答案,欢迎评论区给出。


1.文本分析


取出password中shell出现的次数
第一种方法结果:
      4 /bin/bash
      1 /bin/sync
      1 /sbin/halt
     31 /sbin/nologin
      1 /sbin/shutdown

答案:

(1)root@docker-host-03:~# awk -F: '{s[$NF]++}END{for(i in s)prints[i],i}' /etc/passwd

8 /bin/false

20 /bin/sh

3 /bin/bash

1 /usr/sbin/nologin

1 /bin/sync

(2)root@docker-host-03:~# awk -F: '{print $NF}' /etc/passwd  | sort | uniq -c

     3 /bin/bash

     8 /bin/false

    20 /bin/sh

     1 /bin/sync

     1 /usr/sbin/nologin

 


第二种方法结果:
/bin/sync       1
/bin/bash       1
/sbin/nologin   30
/sbin/halt      1
/sbin/shutdown  1

答案:

(1)

root@docker-host-03:~#awk -F: '{s[$NF]++}END{for(i in s)print i,s[i]}' /etc/passwd

/bin/false 8

/bin/sh 20

/bin/bash 3

/usr/sbin/nologin1

/bin/sync 1

(2)

root@docker-host-03:~#awk -F: '{print $NF}' /etc/passwd  | sort| uniq -c |awk '{print $2,$1}'

/bin/bash 3

/bin/false 8

/bin/sh 20

/bin/sync 1

/usr/sbin/nologin1

 

 

 

2.文件整理
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

 

答案:

root@docker-host-03:~#paste employe.txt  bonus.txt |awk '{print$1,$2,$3,$5}' | tr '[A-Z]' '[a-z]' |so

rt -s -k2

400 ashok sharma$1,250

100 jason smith$5,000

200 john doe$500

300 sanjay gupta$3,000

 

 

 

3.打印本机的交换分区大小
处理结果:
Swap:1024M

 

答案1:

root@docker-host-03:~# free -m | awk ' $0~/Swap/{print $1,$2"M"}'

Swap: 1021M

 

4.用户清理
清除本机除了当前登陆用户以外的所有用户
处理结果:
 23:00:17 up  1:08,  1 user,  load average: 0.02, 0.05,0.02
USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1   192.168.1.100    22:15    0.00s 10.75s 0.00s w
本机只剩下你自己就对了:)

 

 

 

5.root用户今天登陆了多长时间
处理结果:
root logon today: 0.06 hour

 

 

6.打印当前sshd的端口和进程id
处理结果:
sshd Port&&pid: 22 5412

答案:

root@docker-host-03:~#netstat -anlp |grep`pidof 0`| awk -F '[ |:|/]+'  ' $0~/ESTABLISHED/{s=$5;p=$9}END{print  "sshd&&portis:"s,p}'

sshd&&portis:22 2484

 

7.输出本机创建20000个目录所用的时间
处理结果:
real    0m3.367s
user    0m0.066s
sys     0m1.925s

 

答案:

root@docker-host-03:~#time for i in {1..2000};do mkdir $i;done

 

real    0m1.972s

user    0m0.119s

sys 0m1.808s

 

 

8.打印root可以使用可执行文件数
处理结果:
root's bins: 2306

 

答案:

root@docker-host-03:~# find ./ -type f-user root -perm /u+x,g+x | awk '{A=NR}END{print "root bins:",A}

'

root bins: 151

 

 

 

http://oldboy.blog.51cto.com/2561410/1632876?from=singlemessage&isappinstalled=0

 

企业面试题2:
使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:

[python] viewplain copy

1. [root@oldboy oldboy]# sh /server/scripts/oldboy.sh  

2. [root@oldboy oldboy]# ls  

3. coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html  

4. gmkhrancxh_oldboy.html  tmdjormaxr_oldboy.html  wzewnojiwe_oldboy.html  

5. jdxexendbe_oldboy.html  ugaywanjlm_oldboy.html  xzzruhdzda_oldboy.html  

6. qcawgsrtkp_oldboy.html  vfrphtqjpc_oldboy.html  

答案:

我这里就直接用一条命令写,当然要写成脚本也是可以的。

root@docker-host-03:~# for i in `seq 10`;dofile=$(basename `tempfile`)_oldboy.html && touch `echo $file|tr '[A-Z]''[a-z]'`;done

 

 

企业面试题3:请用至少两种方法实现!
将以上文件名中的oldboy全部改成oldgirl(for循环实现),并且html改成大写。

 

1

root@docker-host-03:~# for f in `ls*_oldboy.html`;do newfile=`echo $f|sed 's/_oldboy.html/_oldgirl.HTML/'`&& mv $f $newfile;done

root@docker-host-03:~# ls

123123                  file70fprd_oldgirl.HTML  filer9kepg_oldgirl.HTML  list2       tmp

123123 123123.asdf  filecaf5xe_oldgirl.HTML  files6ucvh_oldgirl.HTML  root          tmpfile

123.sh                   filejvhaud_oldgirl.HTML  filewwwfu8_oldgirl.HTML  solar            tools

backup                   filemiffbf_oldgirl.HTML  filextolxa_oldgirl.HTML  testgit     t.txt

bonus.txt     filepxfdvc_oldgirl.HTML  findcont                test.sh

employe.txt         fileqejddb_oldgirl.HTML  list                test_shell

 

 

(2)

主要是用不同的方法来拼凑出来新的文件名称

root@docker-host-03:~# newfile=`echo"fileqejddb_oldgirl.HTML" | cut -d'_' -f1`_oldboy.HTML

root@docker-host-03:~# echo $newfile

fileqejddb_oldboy.HTML

 

企业面试题4
批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)。

 

1.  USER=oldboy  

2.  create_user(){  

3.    

4.      for i in {01..10}  

5.      do  

6.           RPASSWD=$(tr -dc [:alpha:] < /dev/urandom |head -c 8)  

7.           useradd $USER$i  

8.           echo $RPASSWD|passwd $USER$i --stdin  

9.           echo $USER$i----$RPASSWD >> /oldboy/userpasswd.txt  

10.    done  

11.

 

for  n in{01..10};do

pw=`tempfile | tail –c 8` && useradd  oldboy$n && echo $pw | passwd  oldboy$n –stdin

;done

 

 

 

企业面试题10:请用至少两种方法实现!
bash for
循环打印下面这句话中字母数不大于6的单词(昆仑万维面试题)。
I am oldboy teacher welcome to oldboy training class.

[python] viewplain copy

1. #!/bin/bash  

2.   

3.   

4. echo '###Usage1#####'  

5. a='I am oldboy teacher welcome to oldboy training class.'  

6.   

7.  for i in $a  

8. do  

9.     NUM=`echo $i |wc -L`  

10.    if [ $NUM -le 6 ];then  

11.        echo $i  

12.    fi  

13.done  

14.  

15.  

16.echo '###Usage2######'  

17.  

18.for i in $a  

19.do  

20.    if [ ${#i} -le 6 ];then  

21.        echo $i  

22.    fi  

23.done  

24.