经典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命令终止。

时间: 2024-08-01 13:28:40

经典shell面试题整理的相关文章

shell面试题整理

1.给一个放有IP的文件,其中一个IP一行,统计哪个IP出现的次数最多. ip_input.txt内容如下: 219.217.49.14 175.43.4.87 87.48.98.1 59.73.38.25 219.217.50.14 59.92.48.32 219.217.49.14 59.72.38.142 59.73.38.25 219.217.49.14 用shell脚本实现如下: sort ip_input.txt | uniq -c | sort | tail -1 | awk ‘{

Linux的经典shell命令整理

Linux的经典shell命令整理 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p : %z : %a”|sort -k5 -nr 3.按cpu利用率从大到小排列ps -e -o “%C : %p : %z : %a”|sort -nr 4.打印说cache里的URLgrep -r -a jpg /data/cache/* | strings | grep “http:” | aw

iO经典笔试题整理

iOS经典笔试题整理---2014年8月 1.回答person的retainCount值,并解释为什么 Person * per = [[Person alloc] init]; 此时person 的retainCount的值是1self.person = per; 在self.person 时,如果是assign,person的 retainCount的值不变,仍为1若是:retain person的retainCount的值加1,变为2 若是:copy person的retainCount值

2017最新企业Shell面试题及企业运维实战共30道案例

<跟老男孩学习Linux运维:Shell高级编程实战>一书第19章企业面试题分享. 答案: 1.答案在<跟老男孩学习Linux运维:Shell高级编程实战>第19章一书2016年年底前即将出版. 2.2016最新Shell视频http://edu.51cto.com/pack/view/id-546.html 第19章企业Shell面试题及企业运维实战案例 19.1 企业Shell面试题实战案例 19.1.1 企业Shell面试题1:批量生成随机字符文件名案例 使用for循环在/o

小鹿·试题整理

1)在RHEL5系统中,以下命令(C)可用来查看系统的路由表信息 A) ip add list B) show ip route C) route -n D) route --print 补充:查看网络接口信息 ifconfig 查看网络连接情况 netstat 跟踪数据包       traceroute 目标主机地址 域名解析         nslookup 目标主机地址 2)在Linux系统日志消息中,重要性最低的是(C)级别,表示正常的程序或系统调试信息. A)EMERG B) WAR

那晚征服的一道js经典的面试题

今天朋友共享了一道js中经典的面试题,需求是这样的 给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出 刚拿到这道题的第一感觉便是定义一个count计时器,然后通过for循环 里面嵌套if判断,但是这样的话貌似并不是一个很好的解决方案 因为你并不知道该字符串是数字还是字母和 特殊符号,又或者是这三者的组合形式,所以,这种方案就显得极其的麻烦和繁琐了 所以有一个算是比较好的解决方案,代码如下 //判断一个随意字符串中出现次数最多的字母,并判断出出现过几次

jQuery几个经典表单应用整理回顾

1.文本框获得(失去)焦点 当文本框获得输入焦点时,将该文本框高亮显示,算不得一个应用,只是一个小技巧,可以提高用户体验. [html] view plaincopy <span style="font-family:SimSun;font-size:12px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

那些年我们一起做过的shell面试题(一)

企业真实shell面试题,一起来挑战把! 声明:如有雷同,纯属抄袭 1.开发一个守护进程脚本,每30秒执行一次,检查mysql主从同步 [[email protected] scripts]# cat check_mysql_slave_status.sh #!/bin/bash# date 2016-1-5# author tom# mail [email protected]# function check_mysql_slave_status# version 4.1.2 ####do i

Touch事件or手机卫士面试题整理回答(二)

Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEvent(),返回值控制Touch是否向下传递. true中断事件,false不中断事件. onTouchEvent() 返回值决定否处理事件.True消耗事件,False不处理事件向上传递. 2. 轮播动画的实现原理 ViewPage和TextView组合实现图片和标题的效果 ViewPage设置setOnPa