`
qiemengdao
  • 浏览: 276485 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

经典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符号,更多paste命令请参照http://snailwarrior.blog.51cto.com/680306/144462/
awk用于提取除了tab符号的其余4列。
tr命令用于将字符串中所有大写字符转换为小写字符。更多选项参见http://www.huanxiangwu.com/238/linux-tr%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3
sort命令对字符排序。sort -k 2表示按文件第2个域排序,这里第二个域为姓名,所以是按姓名升序排序。如果要降序排列,则要用sort -k 2r。更多sort命令参见http://www.360doc.com/content/10/0925/15/1107705_56263541.shtml

三、打印本机交换分区大小

问题:打印本机交换分区大小,输出如下
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命令终止。

五、百度脚本面试题

1)写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。
参考答案1:
#!/bin/sh
for filename in `find /tmp -type f -name "abc*"|head -n 100`
do
sed -n '1p' $filename>>new
done
解析:第一,用到了find命令,其中-type f表示选取普通文件,-name用于设定文件名;第二,head -n 100命令用于取出前100项。第三,sed -n ’1p’用于取出文件的第一行内容。第四,>>new表示追加到文件new中。
参考答案2:
find /tmp -type f -name “abc*” | head -n 100 | xargs head -q -n 1 >> new

2)写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。

参考答案:
grep -vxFf a b | tee c | wc -l
解析:grep选取-v表示不选择匹配的行,-F表示匹配的模式按行分割,-f a表示匹配模式来自文件a,最后表示目标文件b。即grep命令从b中选取a中不存在的行。
tee c命令创建文件c,wc -l命令统计行数。



分享到:
评论

相关推荐

    2022超全后台开发面试题整理合集(22份).zip

    2022超全后台开发面试题整理合集,共22份。 1.6W字!梳理50道经典计算机网络面试题(收藏版).pdf 93道网络安全面试题.pdf 110道Python面试题:.pdf 142道linux面试题.pdf 必备!108道 Shell脚本面试题.pdf 微服务...

    百度质量部测试开发工程师面试题整理

    4. Linux:对Linux操作系统的基本使用,包括常用命令、shell脚本编写等。 计算机基础: 这部分涵盖的内容较多,包括但不限于: 1. 计算机组成原理:计算机硬件的基本组成部分和工作原理。 2. 数据结构:数组、链表...

    SSH面试题整理

    以下是对SSH面试题的详细解析,以及与SSH相关的源码和工具的知识点。 1. **SSH基本概念** - SSH的全称是Secure Shell,它为网络服务提供加密的安全通信通道。 - SSH主要用作命令行接口(CLI)远程登录,但也可...

    嵌入式linux vxworks面试题整理.docx

    嵌入式Linux VxWorks面试题整理 本文档汇总了嵌入式Linux VxWorks面试题,涵盖了嵌入式系统、Linux内核、VxWorks实时操作系统、进程管理、线程同步、互斥锁、消息队列、管道、信号量、共享内存、文件系统、网络管理...

    Linux面试题整理.doc

    Linux系统的基础知识涵盖了许多方面,包括文件系统、进程管理、网络配置、系统安全、系统管理、文件权限、设备...这些知识点涵盖了Linux系统操作和管理的多个核心领域,对于准备Linux面试或日常系统维护都非常有用。

    Linux面试题整理.pdf

    以下是对【Linux面试题整理.pdf】中提到的一些核心知识点的详细说明: 1. **设备文件**:Linux将所有资源都视为文件,包括硬件设备。设备文件位于/dev目录下,通过文件的方式来访问和管理硬件设备。 2. **/etc/...

    嵌入式软件面试题整理.pdf

    ### 嵌入式软件面试知识点详解 #### 进程和线程间通信方式 进程间的通信(IPC)包括管道(pipe)、消息队列(message queue)、共享内存(shared memory)、信号量(semaphore)、套接字(socket)等方式。线程间的...

    IT各类面试试题

    3. **Linux面试题**:Linux是开源操作系统,其面试通常关注操作系统的概念、命令行使用、文件系统、进程管理、网络、shell脚本编写以及系统调用等。对于Linux开发者或运维人员,理解内核、权限模型、服务管理和性能...

    Linux运维工程师:20道面试题整理 (2).docx

    Linux运维工程师面试题涵盖了许多关键知识点,这些都是在实际工作中必须掌握的基础技能。下面是对这些面试题涉及知识点的详细解释: 1. **查看Linux运行级别**:`who -r` 和 `runlevel` 命令可以查询Linux系统的...

    Shell-整理的面试题及答案

    【Shell面试题及答案】 在IT面试中,Shell脚本编程技能经常被考察,因为它是Linux和Unix系统中进行自动化任务处理的重要工具。以下是一些关于Shell面试题及其解答,帮助提升Shell脚本的掌握程度。 1. **统计词频**...

    Linux运维工程师:20道面试题整理.docx

    这些面试题涵盖了Linux运维工程师需要掌握的基础知识和常用命令,包括系统管理、网络配置、文件系统、进程监控、软件包管理等多个方面,是评估Linux运维技能的重要参考。通过学习和实践这些知识点,可以提升Linux...

    Linux面试题整理[收集].pdf

    Linux操作系统在IT领域中扮演着重要角色,许多面试题集中在理解和操作Linux系统的基本概念和工具。以下是一些从题目中提取的关键知识点: 1. **文件系统**:在Linux中,一切皆为文件,包括设备,它们以文件的形式...

    linux面试题 已整理过

    ### Linux面试题解析 #### 一、Linux系统基础 **1. 在Linux系统中,以文件方式访问设备。** - **知识点**: Linux采用一切皆文件的设计理念,将硬件设备抽象成文件,使得用户可以通过文件系统来操作硬件设备,如...

    Linux整理的面试题

    ### Linux面试题解析 #### 一、Linux系统基础 **1. 在Linux系统中,以文件方式访问设备。** - **解析**: Linux采用一切皆文件的理念,无论是硬件设备还是网络接口,甚至是进程间通信机制,都可以通过文件的形式来...

    软件测试工程师面试题.md

    集合自身春招经验整理出的软件测试工程师的常见面试题,适合应届毕业生,内容主要是软件测试、shell脚本、Linux操作系统,包括软件测试基础知识、web测试基本方法、爬虫基础、Linux操作系统、微信小程序、shell脚本...

    linux面试题大全

    根据给定的信息,我们可以整理出一...以上是对 Linux 面试题中提及的一些关键知识点的详细介绍,希望能够帮助到准备参加 Linux 面试的朋友。每个知识点都非常重要,对于深入理解和掌握 Linux 系统有着不可或缺的作用。

Global site tag (gtag.js) - Google Analytics