Linux知识


1、Linux的体系结构

图片来源:https://www.geek-share.com/detail/2779369078.html

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种能再简化的操作
  • 公用函数库:系统调用的组合拳
  • 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

作用:查找文件里符合条件的字符串

管道操作符 |

可以将指令连接起来,前一个指令的输出作为后一个指令的输入

图谱来源:https://blog.51cto.com/yuyucat/1651914

使用管道注意的要点

  • 只处理前一个命令正确输出,不处理错误输出
  • 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
  • 常用来接收数据管道的命令有: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指定字符串的行,并把该字符串替换为meg是指对整行的内容进行替换,没有g则只替换该行第一次符合条件的字符串
  • sed -i '/^ *$/d' replace.java:删除空行,d指删除指定行,此处为空格

评论
评论
  目录