Linux常见面试题

1 篇文章 0 订阅

目录

Linux的体系结构

如何查找特定的文件

find

检索文件内容

grep指令

管道操作符 |

对文件内容做统计

awk指令(适合格式化的文档,类似于Excel的文档)

批量替换文件内容

sed指令

面试中常见的用法:


Linux的体系结构

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序(Linux启动后首先启动内核)
  • 系统调用:内核的访问接口,是一种能再简化的操作
  • 公用函数库:系统调用的组合拳(实现对系统的封装,将简单的业务逻辑呈现给用户)
  • Shell指令:命令解释器,可编程(没有图形界面之前,shell充当了用户界面,编写的程序就叫shell脚本)

man 2 syscalls:  查看所有系统指令

man 2 acct : 查看相关系统调用说明(这里是acct)

man 2 :表示查看系统调用

man 3 :表示查看公共库函数

man 指令:表示查看用法

ls -lrt :表示查看当前目录以及相关参数

cat 文件名1 文件名2 ... :表示查看文件的指令(连接显示多个文件)

less 文件名 :表示打开文件查看(类似于vi、vim但是只能查看不能修改)

more文件名 :表示查看文件内容(类似于cat,只能显示一个文件名,并且可以一页一页显示方便查看)

echo $SHELL : 查看当前shell版本

cat /etc/shells:查看本机器etc支持的版本

chsh -s 路径 : 切换shell指令

如何查找特定的文件

find

语法: find path [options] params   在指定目录下查找文件

  • 当前目录下搜索:

  • 全局搜索:

  • 模糊搜索:

忽略大小写的模糊指令

find -iname "demo*"

检索文件内容

grep指令

语法:grep [options] pattern file   grep用于查找文件里符合条件的字符串

  • 查找目录下包含某字符串的文件内容所在的行并打印出来:

管道操作符 |

注意:

  • 只处理前一个命令正确输出,不处理错误输出
  • 右边命令必须能够接收标准输入流,否则传递过程中数据会被拋弃
  • 常用来接受管道输出的命令有:sed, awk, grep, cut, head, top,less, more, wc join, sort, splits

grep在面试中常用的方式:

  • grep 'partial\[true\]' demo.log   //在demo.log中查找出包含partial[true]的行并展示
  • grep -o 'engine\[[0-9a-z]*\]'   //通过-o 命令筛选出符合正则表达式的内容
  • grep -v 'grep'    //通过-V 命令过滤掉包含grep字符串的结果

对文件内容做统计

awk指令(适合格式化的文档,类似于Excel的文档)

语法:awk [options] 'cmd' file

  • 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
  • 将切片直接保存在內建的变量中,$1,$2...($0表示行的全部)
  • 支持对单个切片的判断,支持循环判断,默认分隔符为空格

我们实现准备好一个文本

查看一下:

  • 统计出第二列和第四列的内容:

  • 找出第二列等于hx,第四列等于100的那些行:

  • 找出第二列等于hx,第四列等于100的那些行并保存表头(NR==1保存第一行):

注意:awk默认是使用空格来进行分隔的,当然也可以使用别的符号。

  • 例如使用逗号作为分隔符(使用-F做参数)

awk -F "," '$2=="hx" && $4==100 {print $0}' lmm

  • awk统计次数

批量替换文件内容

sed指令

语法:sed [option] 'sed command' filename    sed全名stream editor,流编辑器,用于对文本的行内容进行处理

把id为1的全部改为520

但是并未更改lmm文档中的实际内容,只是把修改之后内容输出,要实际替换需要加入-i属性

面试中常见的用法:

通式 sed -属性 's/原内容/替换内容' 目标文件

  • sed -i 's/^1/520/' lmm     其中^表示以什么开头
  • sed -i 's/\.$/\;/' lmm      其中$表示以什么结尾,整句话的意思是替换lmm文档中以句号结尾的改为分号(符号是特殊字符需转义)
  • sed -i 's/1/2/' lmm       把每一行的第一个1改成2
  • sed -i 's/1/2/g' lmm       把每一行的所有的1改成2
  • sed -i '/^ *$/d' lmm      删除文档空行
  • sed -i '/gzy/d' lmm      删除文档包含gzy字符串的行

sed还能移动和搜索等功能,这里不再赘述

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值