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. python-----群发图片

    使用wxpy库给3个人群发同一张图片 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/2/22 15:25 # @Author ...

  2. linux内存管理之uboot第一步

    在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的.通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调 ...

  3. 访问linux的mysql-没有iptables文件的情况,防火墙开启3306端口

    转自:https://blog.csdn.net/wangt_1224/article/details/45824095

  4. js读取ognl表达式的内容

    <input type="hidden" id="number"   value='<s:property  value="resultN ...

  5. asp.net MVC Model 类的主键 int类型、string类型、GUID类型。

    在使用asp.net mvc进行定义 模型类的时候,一般情况下,我们都会定义一个属性为 int iD{get;set;} 或为int ClassNameID {get;set;},在这种情况下 1.I ...

  6. 使用Asp.net Identity 创建用户 、登录代码

    1.Identity 1中的注册.登录.注销代码 vs 2013中自带的注册用户代码: 1.首先创建一个ApplicationUser 初始化用户名. 2.使用UserManager创建一个用户,用使 ...

  7. SqlSugar解决SQLite访问的问题:Unable to load DLL 'SQLite.Interop.dll'

    SqlSugar用的版本是4.5.9.5,访问SQLite数据提示错误.在本机调试一时没有什么错误,把代码发布到服务器上以后刚开始运行没有问题,一段时间后报错. English Message : C ...

  8. RTSP协议简介(转载)

    转自:http://ilinux.iteye.com/blog/505753 Real Time Streaming Protocol 或 者RTSP(实时流媒体协议),是由Real network ...

  9. 3 Java对象的内存布局以及对象的访问定位

    先来看看Java对象在内存中的布局   一 Java对象的内存布局 在HotSpot虚拟机中,对象在内存中的布局分为3个区域 对象头(Header) Mark Word(在32bit和64bit虚拟机 ...

  10. idea打印gc日志

    1.在idea里添加配置 -XX:+PrintGCDetails 2.打印GC的详细信息: -XX:+PrintGCDetails 解释:打印GC详细信息. -XX:+PrintGCTimeStamp ...