Linux的体系结构

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种不能再简化的操作
  • 公用函数库:系统调用的组合拳
  • Shell:命令解释器,可编程

Linux面试常考命令

面:如何查找特定的文件?

答:可以使用find命令。语法:find path [options] params。含义:在指定目录下查找文件。

[spider@izwz9d74k4cznxtxjeeur9z ~]$ find -name "spi*"  #在当前目录下查找以spi开头的文件
./spider-novels
./spider-novels/novels/novels/spiders
[root@izwz9d74k4cznxtxjeeur9z spider]# find / -name "qwert.txt" #从根路径开始查找名为qwert.txt的文件
/home/spider/qwert.txt

面:如何检索文件的内容?

答:可以使用grep命令。语法grep [option] pattern file.

[root@izwz9d74k4cznxtxjeeur9z spider]# cat test*
This is a beautiful girl.
Hello world!
Thank you.
[root@izwz9d74k4cznxtxjeeur9z spider]# grep "Thank" test* #从test开头的文件中,检索出含有Thank的行
Thank you.

若grep后面没有加文件名,则表示从标准输入流中获取输入,此时可以配合管道连接符|一起使用。

[root@izwz9d74k4cznxtxjeeur9z spider]# find -name "test*" | grep "test.txt" #表示find命令的结果作为grep命令的标准输入
./test.txt

面:如何对文件内容(表格)做出统计?

答:可以使用awk命令,语法awk [option] 'cmd' file。一次读取一行文本,按输入分隔符进行切片,切成多个组成部分;将切片直接保存在内建的变量中,$1,$2...($0表示行的全部);支持对单个切片的判断,支持循环判断,默认分隔符为空格。

现有一个文件,格式类似于表格,其中包含了选课信息等。

[root@izwz9d74k4cznxtxjeeur9z spider]# ll
总用量 152
-rw-r--r-- 1 root root 144153 3月 18 10:28 2019年春季学期专业选修课选课表.txt
drwxr-xr-x 3 root root 4096 2月 26 13:43 spider-novels
-rw-r--r-- 1 root root 50 3月 18 08:53 test.txt
[root@izwz9d74k4cznxtxjeeur9z spider]# head 2019*
学生学院 专业班级(方向) 年级 人数 课程名 课程号 课序号 课程属性 学分 学时 开课单位 任课教师 选课限制说明
石工院 海洋油气工程(一班) 2016 24 海洋油气工程仪表与自动化 9111008030 2399 限选 3 48 电信院 杨青 海洋油气1601
石工院 海洋油气工程(一班) 2016 24 海洋完井工程 9111011030 2399 限选 3 48 石工院 熊友明、刘理明 海洋油气1601
石工院 海洋油气工程(一班) 2016 24 海洋油气集输工程 9115006030 2398 限选 3 48 石工院 邓雄 海洋油气1601
石工院 海洋油气工程(二班) 2016 29 海洋油气工程仪表与自动化 9111008030 2399 限选 3 48 电信院 杨青 海洋油气1602
石工院 海洋油气工程(二班) 2016 29 海洋完井工程 9111011030 2399 限选 3 48 石工院 熊友明、刘理明 海洋油气1602
石工院 海洋油气工程(二班) 2016 29 海洋油气集输工程 9115006030 2399 限选 3 48 石工院 朱红钧 海洋油气1602
石工院 石油工程(创新班) 2016 51 油气藏开发地质学(1组) 3404596025 2397 限选 2.5 40 地科院 牟中海 任选其一
石工院 石油工程(创新班) 2016 51 油气藏开发地质学(2组) 3404596025 2398 限选 2.5 40 地科院 赵晓明
石工院 石油工程(创新班) 2016 51 油气藏开发地质学(3组) 3404596025 2399 限选 2.5 40 地科院 周彦

如何提取出第一列学生的学院和第四列人数?

[root@izwz9d74k4cznxtxjeeur9z spider]# awk '{print $1, $4}' 2019*

学生学院 人数
石工院 24
石工院 24
石工院 24
石工院 29
石工院 29
石工院 29
石工院 51
石工院 51
石工院 51
石工院 32
石工院 32
石工院 32
石工院 27
石工院 27
石工院 27
......

过滤输出院系为计科院、且年级为2015级的选课信息。

分析:院系为第一列,年级为第三列。

[root@izwz9d74k4cznxtxjeeur9z spider]# awk '$1=="计科院"&&$3==2015 {print $0}' 2019*
计科院 计算机科学与技术 2015 177 自主和交互式学习(二课) 5615026020 2499 限选 2 2周 计科院 岳静
计科院 计算机科学与技术 2015 177 嵌入式程序设计大赛(二课) 5615027020 2499 限选 2 2周 计科院 何志敏
计科院 软件工程 2015 194 创新创业项目培育孵化(二课) 5815201020 2499 限选 2 2周 计科院 廖浩德
计科院 软件工程 2015 194 软件外包项目驱动(二课) 5815202020 2499 限选 2 2周 计科院 张剑
计科院 软件工程 2015 194 程序设计第二课堂(二课) 5815203020 2499 限选 2 2周 计科院 杨力
计科院 软件工程 2015 194 大数据与机器学习(二课) 5815204020 2499 限选 2 2周 计科院 王兵
计科院 软件工程(卓越班) 2015 57 科技竞赛(二课) 5815601020 2499 限选 2 2周 计科院 杨力
计科院 软件工程(卓越班) 2015 57 科研项目(二课) 5815602020 2499 限选 2 2周 计科院 张剑
计科院 软件工程(卓越班) 2015 57 虚拟创业(二课) 5815603020 2499 限选 2 2周 计科院 杨力
计科院 软件工程(卓越班) 2015 57 资格认证(二课) 5815604020 2499 限选 2 2周 计科院 廖浩德
计科院 网络工程 2015 110 信息安全大赛(二课) 6015018020 2499 限选 2 2周 计科院 张恒汝
计科院 网络工程 2015 110 互联网应用开发大赛(二课) 6015019020 2499 限选 2 2周 计科院 张小洪
计科院 网络工程 2015 110 网络配置大赛(二课) 6015020020 2499 限选 2 2周 计科院 何中越
计科院 网络工程 2015 110 创新创业项目培育孵化(二课) 6015021020 2499 限选 2 2周 计科院 陈雁
计科院 物联网工程 2015 132 物联网应用设计(二课) 9815356030 2499 限选 3 3周 计科院 梅大成
计科院 信息管理与信息系统 2015 69 电子商务类比赛认证(二课) 7015031010 2499 限选 1 1周 计科院 杨力
计科院 信息管理与信息系统 2015 69 ERP类比赛认证(二课) 7015032010 2499 限选 1 1周 计科院 钟学燕

上面的结果没有表头,我们可以使用NR==1输出第一行,即表头。

[root@izwz9d74k4cznxtxjeeur9z spider]# awk 'NR==1 {print $0}' 2019*
学生学院 专业班级(方向) 年级 人数 课程名 课程号 课序号 课程属性 学分 学时 开课单位 任课教师 选课限制说明

面:如何批量替换文本的内容

答:可以使用sed命令,语法:sed [option] 'sed command' filename。全名stream editor,流编辑器;适合用于对文本的行内容进行处理。

现有一个java文件如下:

[root@izwz9d74k4cznxtxjeeur9z spider]# cat replace.java
Str a = "The beautiful girl's bot friend is Jack'.
Str b = "The beautiful girl often chats with Jack and Jack is Jack".
Str c = "The beautiful girl loves Jack so much". Integer bf = new Integer(2);

首先需要将每一行的Str修改为String。

[root@izwz9d74k4cznxtxjeeur9z spider]# sed 's/^Str/String/' replace.java #替换后,原文件没有发生改变,如需改变需要加入-i选项
String a = "The beautiful girl's bot friend is Jack'.
String b = "The beautiful girl often chats with Jack and Jack is Jack".
String c = "The beautiful girl loves Jack so much". Integer bf = new Integer(2);

将每一行的.变为;,需要加入转义字符。

[root@izwz9d74k4cznxtxjeeur9z spider]# sed -i 's/\.$/\;/' replace.java
[root@izwz9d74k4cznxtxjeeur9z spider]# cat replace.java
String a = "The beautiful girl's bot friend is Jack';
String b = "The beautiful girl often chats with Jack and Jack is Jack";
String c = "The beautiful girl loves Jack so much"; Integer bf = new Integer(2);

将每行的Jack都替换成me,注意加入g选项,表示全文替换,否则每一行只有第一个Jack会被替换。

[root@izwz9d74k4cznxtxjeeur9z spider]# sed -i 's/Jack/me/g' replace.java
[root@izwz9d74k4cznxtxjeeur9z spider]# cat replace.java
String a = "The beautiful girl's bot friend is me';
String b = "The beautiful girl often chats with me and me is me";
String c = "The beautiful girl loves me so much"; Integer bf = new Integer(2);

删除所有的空行,此时不需加入s选项表示字符串,加入d选项表示操作行。

[root@izwz9d74k4cznxtxjeeur9z spider]# sed -i '/^ *$/d' replace.java
[root@izwz9d74k4cznxtxjeeur9z spider]# cat replace.java
String a = "The beautiful girl's bot friend is me';
String b = "The beautiful girl often chats with me and me is me";
String c = "The beautiful girl loves me so much";
Integer bf = new Integer(2);

参考资料

慕课网 剑指Java面试-Offer直通车

面试之Linux的更多相关文章

  1. 联想北研实习生面试-嵌入式Linux研发工程师

    8月中旬暑假去联想北研参加了实习生面试,面试职位是嵌入式Linux研发工程师.投完简历第二天,主管回复我邮件,意思是说随时来面试,到北研时候给他打个电话就行.于是我回复条短信表示感谢,并约好时间第二天 ...

  2. 关于面试总结-linux篇

    前言 现在做测试的出去面试,都会被问到linux,不会几个linux指令都不好意思说自己是做测试的了,本篇收集了几个被问的频率较高的linux面试题 常用指令 1.说出10个linux常用的指令 ls ...

  3. 面试总结 | Linux后台开发不得不看的知识点(给进军bat的你!)

    目录 一 自我介绍 二 面试情况 三 相关知识点汇总 1 c/c++相关 2 计算机网络 3 数据结构相关 4 数据库相关 5 操作系统 6 Linux基础知识及应用编程(后台必备!) 7 大数问题 ...

  4. Java面试12|Linux及Shell脚本

    1. 随便写一个awk的命令.用awk统计文本行数 (1)最近登录的5个帐号 last -n 5 | awk -F ':'(指定域分割符号) '{print $1}' 读入有'\n'换行符分割的一条记 ...

  5. php面试之四-Linux部分

    php面试题之四——Linux部分(高级部分) 四.Linux部分 1.请解释下列10个shell命令的用途(新浪网技术部) top.ps.mv.find.df.cat.chmod.chgrp.gre ...

  6. 开学习实用的笔试面试技术:linux

    1.F:\Movies\尚学堂大数据周末班原版(传智大数据第三期):课程比较乱,按照顺序都学了吧 1.linux基础:原来不会linux就废了.一定要装虚拟机.2018-05-27开搞. 服务器只能装 ...

  7. 测试开发面试的Linux面试题总结之二:常用命令

    (1)Linux的文件系统目录配置要遵循FHS规范,规范定义的两级目录规范如下:        /home  每个账号在该目录下都有一个文件夹,进行数据的管理        /usr 有点像windo ...

  8. 测试开发面试的Linux面试题总结之一:vim使用方法

    现在做测试没有说不用到linux,大部分公司都会涉及到,作为测试经常使用linux最常见手段就是查看日志,帮助开发定位问题,这是目前最常见的测试当中使用linux方法,今天就讲一讲vim文本编辑器的使 ...

  9. 测试开发面试的Linux面试题:常用命令

    Hello,大家好上次给大家介绍了vim使用方法,今天来给大家讲一讲linux系统文件命令 (1)Linux的文件系统目录配置要遵循FHS规范,规范定义的两级目录规范如下:        /home  ...

随机推荐

  1. bzoj 4521 电话号码

    题目大意: 求$[L,R]$中,满足不同时存在4和8且有连续三个一样的个数 思路: 我为什么要记忆化搜索里带-1啊 我可真是个** 直接记忆化搜索记前两位是否有4,8以及是否满足连续 #include ...

  2. ThreadLocal工具类 隔离思想

    ThreadLocal不是用来解决共享对象的多线程访问问题的, 通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象, ...

  3. AutoIT: 如何设置GUICtrlCreateCombo选项为不可修改状态

    GUICtrlCreateCombo中选中的选项是可修改的,也可设置为不可修改状态. #include<ComboConstants.au3> GUICtrlCreateLabel(, , ...

  4. AutoIT: 处理GridView控件的一些折中方法

    一般情况下,Gridview是无法通过AutoIT Window Info来获取控件信息的,但是可以有折中的办法对Gridview中的字段赋值. #include<array.au3> $ ...

  5. VS2013插件开发

    一.功能描述 项目中有一个AppSettings.xml文件,当这个文件有添加新元素的时候,将该添加的内容自动同步到其他目录下的AppSettings.xml文件. 二.插件模板选择 要开发VS插件需 ...

  6. python 面向对象四 继承和多态

    一.继承 class Animal(object): def run(self): print('Animal is running...') class Dog(Animal): def run(s ...

  7. bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】

    首先,我们发现,因为是无向图,所以相连的点之间是有"依赖性"的,所以不能直接用dp求解. 因为是xor,所以按位处理,于是列线性方程组,设$ x[i] $为点i到n异或和为1的期望 ...

  8. bzoj 4071: [Apio2015]巴邻旁之桥【splay】

    用权值线段树会容易一些并快一些,但是想复健一下splay所以打了splay 然后果然不会打了. 解题思路: 首先把家和办公室在同一侧的提出来直接加进答案里: 对于k=1,直接选所有办公室和家的中位数即 ...

  9. poj 2398 Toy Storage【二分+叉积】

    二分点所在区域,叉积判断左右 #include<iostream> #include<cstdio> #include<cstring> #include<a ...

  10. Luogu P1462 通往奥格瑞玛的道路【二分/最短路】

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...