Linux常见考点
Linux体系结构
Linux体系结构主要分为用户态和内核态。主要组成如下:
内核:本质上是一段管理计算机硬件设备的程序
系统调用:内核的访问接口(类似原子操作)
公共库函数:实现对系统调用的封装,简化系统调用
shell:命令解释器(可编程)
查找特定文件-find
作用:
在指定目录下查找文件。
- find ~ -name “target.java” :在~目录下精确查找文件
- find ~ -name “target*” :模糊查找文件
- find ~ -name “target*” :不区分文件名大小写查找文件
文本搜索-grep
作用:
从指定文件中查找包含关键字的文本行。
- grep ‘keywords’ data.info.log :从日志文件中查找关键字的行
- grep -o ‘engine[[0-9a-z]*]’ :使用正则表达式筛选出行
- grep -v ‘keywords’ :过滤掉包含相关字符串的内容
管道连接符-|
作用:
可以将指令连接起来,将前一个指令的输出作为后一个指令的输入。即组合shell指令。
注意:
- 管道组合时前一个命令必须正确。
- 右边命令能够接收标准输入流,否则传递过程中数据会被抛弃。
- 常用来接收数据管道的命令有:sed,awk,grep,cut,head,top,less,more,wc,join,sort,split
等。
例如:
-
find ~ | grep “target”
:先从home目录下查找所用文件,然后把它作为输入流传递给grep,grep从这些里找出文件名包含target的文件。 -
grep ‘keywords’ data.info.log | grep -o ‘engine[[0-9a-z]*]’
:先筛选出日志中包含keywords的文本行,然后进一步筛选出engine信息。
对文件内容做统计-awk
作用:
- 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分。
- 将切片直接保存在内建的变量中,$1$2…($0表示全部行)。
- 支持单个切片的判断,也支持循环判断,默认分隔符是空格。
例如:
- awk ‘{print $1,$4}’ netstat.txt :在用分隔符的文件中,打印第一列和第四列的文本
- awk ‘$1==“tcp” && $2==1 {print $1,$4}’ netstat.txt
:打印第一列数据是tcp和第四列数据是1的文本 - awk ‘($1==“tcp” && $21) || NR1 {print $1,$4}’ netstat.txt
:打印表头和第一列数据是tcp和第四列数据是1的文本 - awk -F “,” ‘{print $2}’ test.txt :以,为分隔符,打印第二列数据
- grep ‘keywords’ data.info.log | grep -o ‘engine[[0-9a-z]*]’ | awk
‘{enginearr[$1]++}END{for(i in enginearr)print i “\t” enginearr[i]}’
:统计每类engine个数
批量替换文本内容-sed
作用:
流编辑器,适合对文本的行内容进行处理。
例如:
- sed -i ‘s/^Str/String’ test.java
:文件中Str开头的行,把Str换成String,s表示字符串,-i表示直接在目标文本上做修改。 - sed -i ‘s/.$/;/’ test.java :筛选出.号结尾的行,并将其替换为;
- sed -i ‘s/Jack/me/g’ test.java :筛选出包含Jack的行,并将其替换为me,g表示全文都替换。
- sed -i ‘/^ *$/d’ test.java :删除空行。
- sed -i ‘/key/d’ test.java : 删除key的行。