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
经验分享 程序员 微信小程序 职场和发展