1、使用echo $SHELL 查看当前的shell版本
2、通过cat /etc/shells 查看本机器支持的shell版本
3、chsh -s 后接shell路径
一、如何找到特定的文件
find
语法:find path [options] params
作用:在指定的目录下查找文件
例:
1)、查找当前目录下的target3.java文件
find -name "target3.java"
2)、从根目录查找target3.java文件
find / -name "target3.java"
3)、查找当前用户的home目录下,以target打头的文件
find ~ -name “target*” ---“*” 通配符
find ~ -iname “target*” ---"-i"不区分大小写
二、检索文件内容
1、grep
语法:grep [options] pattern file
全称:Global Regular Expression Print
作用:查找文件里符合条件的字符串
例:
1)、从target打头的文件中查找,包含“moo”字符串的行
grep "moo" target*
2、管道操作符|
可将指令连接起来,前一个指令的输出作为后一个指令的输入
例:
1)、从根目录查找以target开头的文件
find ~|grep "target"
2)、从bac-plat-al-data.info.log中查找partial[true]的行
grep ‘partial\[true\]‘ bac-plat-al-data.info.log
3)、从2)的结果中查找engine的信息,engine由数字和字母组成
grep ‘partial\[true\]‘ bac-plat-al-data.info.log| grep -o ‘engin\[[0-9a-z]*\]‘
4)、查看当前tomcat的进程,grep -v 过滤掉当前的指令
ps -ef| grep tomcat |grep -v "grep"
使用管道注意的要点:
a)、只处理前一个命令正确输出,不处理错误的输出
b)、右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
例:find ~|grep "target" |echo 不会输出任何数据
c)、常用来接收管道的命令有sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等
三、对文件内容做统计
awk
语法:awk [options] ‘cmd‘ file
1)、一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
2)、将切片直接保存在内建的变量中,$1,$2...($0表示行的全部)
3)、支持对单个切片的判断,支持循环判断,默认的分隔符为空格
例:
1)、筛选出netstat.txt中的第一列和第四列
awk ‘{print $1,$4}’ netstat.txt
2)、在1的基础上进一步过滤,筛选出Proto为tcp并且Recv-Q等于1的列
awk ‘$1="tcp" && $2==1{print $0}‘ netstst.txt
显示第一行
awk ‘($1=="tcp"&& $2==1) || NR==1 {print $0}‘ netstat.txt
3)、awk默认分隔符是空格“ ”,现在以“,”为分隔符打印出第二列
awk -F "," ‘{print $2}‘ test.txt
4)、打印出partial为true并且以engine分组,统计出现的次数
grep ‘partial\[true\]‘ bac-plat-al-data.info.log| grep -o ‘engin\[[0-9a-z]*\]‘|awk ‘{enginearr[$1]++} END {for(i in enginearr) print i "\t" enginearr[i]}‘
四、批量替换文件的内容
sed
语法:sed [option] ‘sed command‘ filename
1)、全名stream editor,流编辑器
2)、适用用于对文本的编辑
例:
1)、修改头部“Str”,改为“String”
sed -i ‘s/^Str/String/’ replace.java
2)、修改每一行最尾部的“.”改成“;”
sed -i ‘s/\.$/\;/‘ replace.java
3)、将每一行的"jack"替换成"me"
sed -i ‘s/jack/me/g‘ replace.java --如果不加g,将替换每一行首次出现的jack
4)、依据某规则删除数据;删除空行
sed -i ‘/^ *$/d‘ replace.java --此时没有前面的s了,因为s是对字符串的操作
5)、删除包含Integer的行
sed -i ‘/Integer/d‘ replace.java
原文:https://www.cnblogs.com/dasha/p/10859137.html