Java后端面试系列-Linux篇

Linux的体系结构

在这里插入图片描述

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种能再简化的操作
  • 公用库函数:系统调用的组合拳
  • Shell:命令解释器,可编程

如何查找特定的文件?

find

语法 find path [options] params
  • 作用:在指定的目录下查找文件
// 在当前目录下查找指定文件名的文件
find -name "target.java"
// 在指定目录下查找以指定文件名开头的文件
find / -name "target*"
// 在指定目录下查找以指定文件名开头的文件。并忽略大小写
find / -iname "target*"
// 更多关于find指令的使用说明
man find

检索文件内容

grep

语法 grep [options] pattern file
  • 全称:Global Regular Expression Print
  • 作用:查找文件里符合条件的字符串
// 查找target开头的文件中含有"stu"的行
grep "stu" target*

管道操作符 |

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

在这里插入图片描述

// 等同 find ~ -name target*
find ~ | grep "target"
// -o 只匹配一行中的指定内容
grep "stu" tar* | grep -o haha
// -v 过滤到指定内容的行
ps -ef | grep tomcat | grep -v "grep"

使用管道注意的要点:

  • 只处理前一个命令的正确输出,不处理错误输出
  • 右边命令必须能够接受标准输入流,否则传递过程中数据将会被抛弃
  • sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

对文件内容做统计

awk

语法 awk [options] 'cmd' file
  • 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
  • 将切片直接保存在内建的变量中,$1,$1…($0表示行的全部)
  • 支持对单个切片的判断。支持循环判断,默认分隔符为空格
// 打印每行第1列、第4列
awk '{print $1,$4}' netstatInfo.txt
// 加入条件
awk '$1=="tcp"&&$6=="LISTEN"{print $0}' netstatInfo.txt
// 加入表头
awk '($1=="tcp"&&$6=="LISTEN")||NR==1{print $0}' netstatInfo.txt
// 按照“,”分隔
awk -F "," '($1=="tcp"&&$6=="LISTEN")||NR==1{print $0}' netstatInfo.txt
// 统计个数
cat target3.txt | awk '{arr[$1]++}END{for(i in arr){print i "\t" arr[i]}}'

批量替换文本内容

sed

语法 sed [option] 'sed command filename'
  • 全名stream editor,流编辑器
  • 适合用于对文本的行内容进行处理
// 将以'play'开头的字符串替换为'war',但仅打印出来
sed 's/^play/war/' target3.txt
// -i 将更改保存到文本中
sed -i 's/^play/war/' target3.txt
// 全局替换
sed -i 's/^play/war/g' target3.txt
// 删掉空行
sed -i '/^ *$/d' target3.txt
// 删掉指定内容行
sed -i '/war/d' target3.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章