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 " " 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
上一篇:
Java基础知识总结(2021版)