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. bzoj3696

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 245  Solved: 131[Submit][Status][Discuss] ...

  2. Python.h:No such file or directory

    出现No such file or directory的错误,有两种情况,一种是真的没有Python.h这个文件,一种是Python的版本不对, 可以进入/usr/include/文件夹下的Pytho ...

  3. 【插件开发】—— 6 SWT 复杂控件使用以及布局

    前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 前几篇讲到了简单控件的使用,复杂控件使用原则上与 ...

  4. C# 大文件上传

    IHttpModule 分块上传大文件 IHttpModule 分块上传大文件 来源:http://www.cnblogs.com/HeroBeast/archive/2008/03/18/10848 ...

  5. GC_CONCURRENT freed 循环不停打印日志

    打印类似如下语句: 03-07 19:21:49.562: D/dalvikvm(1677): GC_CONCURRENT freed 2859K, 20% free 12020K/15011K, p ...

  6. 原创 SqlParameter 事务 批量数据插入

    不错,很好,以后防注入批量事务提交虽然麻烦点研究了几个小时,但不会是问题了 SqlCommand cmd; HelpSqlServer helps = new HelpSqlServer(); //定 ...

  7. SSM学习

    一.https://www.cnblogs.com/zyw-205520/p/4771253.html 二.https://blog.csdn.net/dwhdome/article/details/ ...

  8. SpringBoot_自定义配置属性

    @ConfigurationProperties 在aplication.properties 中添加如下一段配置: mysql.jdbcName=com.mysql.jdbc.Driver mysq ...

  9. (四)SpringIoc之Bean装配

    在pom.xml的依赖 <dependencies> <!--测试包--> <dependency> <groupId>junit</groupI ...

  10. java课程设计全程实录——第1天

    反思,总结昨天: IDE搭建完成: git远程配置失败,处理方式:放弃使用git 主要参考<疯狂java实战演义>中的图书进销存管理系统.但该项目是MySQL,无法直接套用,因为我们学的是 ...