1、Linux的体系结构
- 体系结构主要分为用户态(用户上层活动)和内核态
- 内核:本质是一段管理计算机硬件设备的程序
- 系统调用:内核的访问接口,是一种能再简化的操作
- 公用函数库:系统调用的组合拳
- Shell:命令解释器,可编程
2、Linux查找特定文件
如何查找特定的文件?
find
语法:find path [options] params
作用:在指定目录下查找文件
面试里常用的方式:
find ~ -name "target3.java"
: 精确查找文件find ~ -name "target*"
:模糊查找文件find ~ -iname "target*"
:不区分文件名大小写去查找文件man find
:更多关于find指令的使用说明
3、检索文件内容
grep
语法:grep [options] pattern file
全称:Global Regular Expression Print
作用:查找文件里符合条件的字符串
管道操作符 |
可以将指令连接起来,前一个指令的输出作为后一个指令的输入
使用管道注意的要点:
- 只处理前一个命令正确输出,不处理错误输出
- 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
- 常用来接收数据管道的命令有:sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等
面试里常用的方式:
find ~ | grep "target"
:模糊查找文件grep 'partial\[truel\]' bsc-plat-al-data.info.log
:在内容中查找包含某个字段的文件,并在相关的行中展示出来grep -O 'engine\[[O-9a-z]*\]'
:筛选出符合正则表达式的内容grep -V 'grep'
:过滤掉包含此字符串的内容
4、对日志内容做统计
awk
语法: awk [options] 'cmd' file
- 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
- 将切片直接保存在内建的变量中, $1,$2…($0表示行的全部)
- 支持对单个切片的判断,支持循环判断,默认分隔符为空格
- 面试里常用的方式*
awk '{print $1, $4}' netstat.txt
:筛选出文件内容的某些列的数据awk '$1=="tcp" && $2==1 {print $O}' netstat.txt
:依据某些条件筛选文件内容中的某些列的数据awk '{enginearr[$1]++}END{for(i in enginearr)print i"\t" enginearr[i]}'
:对内容逐行做统计操作,并列出对应的统计结果
示例:grep 'partial\[truel\]' bsc-plat-al-data.info.log | grep -O 'engine\[[O-9a-z]*\]' | awk '{enginearr[$1]++}END{for(i in enginearr)print i "\t" enginearr[i]}'
5、批量替换文件内容
sed
语法:sed [options] 'sed command' filename
- 全名stream editor,流编辑器
- 适合用于对文本的行内容进行处理
面试里常用的方式:
sed -i 's/^Str/String/' replace.java
:在文件中筛选出以Str
开头的行并把Str
替换成String
,-i
表示直接在目标文本上进行修改,s
是指对字符串进行操作sed -i's/\.$/\;/' replacejava
:筛选出以.
结尾的行,并把.
替换为;
,$
是指结尾符sed -i's/Jack/me/g' replace.java
:筛选出包含Jack
指定字符串的行,并把该字符串替换为me
,g
是指对整行的内容进行替换,没有g
则只替换该行第一次符合条件的字符串sed -i '/^ *$/d' replace.java
:删除空行,d
指删除指定行,此处为空格