1.如何找到特定的文件?
find
语法:find path [options] params
如: find / -name test.java
从/目录开始递归查询,如果要充home目录,则将/改为~既可
find ~ -iname test.*
从home目录递归查找,忽略大小写,查询以test.开头的文件
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
find作用:
- 1.在指定目录下查找文件
和find有区别,which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
2.检索文件内容
grep
(全称:Global Regular Expression Print)
语法: grep [options] pattern file
grep作用:
- 1.查找文件里符合条件的字符串
| 作用
(管道操作符,用于接收和传递上个指令的正确输出结果)
1.只处理前一个命令的正确输出,不处理错误输出
2.右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
面试常用的方式:
- grep 'xxx' demo.log 从demo.log文件里筛选出包含xxx的行
- grep -o 'xxx' 筛选出xxx的内容
- grep -v 'grep' 排除掉grep的内容
3.对文件内容做统计
awk
语法: awk [options] 'cmd' file
awk作用:
- 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
- 将切片直接保存在内建的变量中,$1,$2...($0表示行的全部)
- 支持对单个切片的判断,支持循环判断,默认分隔符为空格
如:
awk '{print $1,$4}' netstat.txt
该命令是对netstat.txt文件的列进行切片, 并打印输出第一列和第四列的内容(默认按照空格分隔,也可以通过指定命令如 awk -F "," '{print $2}' test.txt 其中-F是以什么来分隔的)
面试常用的方式:
awk '{print $1,$4}' netstat.txt
筛选出文件里的数据awk '$1=="tcp" && $2==1{print $0}' netstat.txt
从文件里按照一定的条件筛选数据awk'{arryname[$1]++} END {for (i in arryname} print i "\t" arryname[i]'
对数据进行统计
4.批量替换文件内容
sed:
(全称:stream editor,流编辑器)
语法:sed [options] 'sed command' filename
sed作用:
- 更适合对文件编辑
面试常用的方式:
sed -i 's/^Str/String/' demo1.java
替换掉以Str开头的内容,替换为String,加-i是将替换完后的文件覆盖源文件sed -i 's/.$/;/' demo1.java
筛选出.号结尾的行,并将.号替换成; 其前的\均为转义字符sed -i '是/Jack/me/g' demo.java
筛选出包含Jack的行,并将该字符串替换成me, 在最后加了g后,对整行内容全部替换,不加则只替换一次
加s是表明对字符串做操作sed -i '/^ *$/d' demo1.java
删除空格行 末尾的d是删除作用
常用命令
查找80端口是否被占用
lsof -i:80
或
netstat -apn | grep 80
vmstat
排查步骤: