Linux体系结构
Linux
- 体系结构分为用户态和内核态
- 内核:本质上是一段管理计算机硬件设备的程序
- 系统调用:内核的访问接口,是一种不能再简化的操作
- 公用函数库:系统调用的组合拳
- Shell:命令解释器,可编程
查找特定文件
find
1 2
| # 语法: find path [options] params
|
示例:
1
| find / -name "target.java"
|
1 2
| # 以target开头 不区分大小写 支持正则表达式 find / -iname "target*"
|
检索文件内容
grep
1 2
| # 语法: grep [OPTION]... PATTERN [FILE]...
|
全称:Global Regular Expression Print
作用:查找文件里符合条件的字符串
示例:
1 2
| # 从target开头的文件中找包含moo的行 grep "moo" target*
|
1 2
| # 通过正则表达式匹配(输入由管道输入) grep -o 'engin[0-9]*'
|
1 2
| # 过滤掉相关字符串的内容 grep -v 'grep'
|
管道操作符 |
- 可将指令连接起来,前一个指令的输出作为后一个指令的输入
- 只处理正确输出,无法接受错误输出
- 必须后面的命令接受标准输入流,否则数据会被抛弃
| 组合其他操作符
1 2
| # 找到根目录下target的文件 find / | grep "target"
|
对文件内容做统计
awk
语法:
1 2 3 4
| Usage: awk [POSIX or GNU style options] -f progfile [--] file ... Usage: awk [POSIX or GNU style options] [--] 'program' file ...
awk options 'cmd' file
|
- 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
- 将切片直接保存在内建的变量中,$1,$2…..($0表示行的全部)
- 支持对单个切片的判断,支持循环判断,默认分隔符未空格
用法:
示例:
1 2
| # 输出每行的第一和第四组数据,按空格分组 awk '{print $1,$4}' nestat.txt
|
1 2
| # 如果第一组等于tcp,第二组等于1则输出全行 awk '$1=="tcp"&&$2=="1"{print $0}'
|
1 2
| # 如果第一组等于tcp,第二组等于1则输出全行 如果是第一行数据,也输出(NR即当前为第几行的内建变量) awk '($1=="tcp"&&$2=="1") || NR == 1 {print $0}'
|
1 2
| # 按照逗号分组 awk -F "," '{print}' text.txt
|
统计相同行出现的次数并列出统计结果
批量替换文本内容
sed
语法:
1 2 3
| sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed [OPTION]... 'sed command' filename
|
- 全名 stream editor ,流编辑器,用程序的方式编辑文本
- 适用于对文本的行内容进行处理
用法:
1 2 3
| # 把Str开头的单词换成String s表示字符串操作 # 不加 -i 只输出到终端,加了才输出到源文件 sed -i 's/^Str/String/' replace.java
|
1 2
| # 把结尾的.改成; sed -i 's/\.$/\;/' replace.java
|
1 2
| # 把 jack改成me 加g代表全文替换,否则只替换每行第一次匹配的地方 sed -i 's/jack/me/g' replace.java
|
1 2
| # 删除空白行 d表示删除,没加s因为不是字符串操作 sed -i '/^ *$/d' replace.java
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| ls mv cp ps rm cd touch vi/vim shutdowm ifconfig uname pwd scp
|