Linux体系结构

Linux

截屏2021-01-12 下午10.13.19
  • 体系结构分为用户态和内核态
  • 内核:本质上是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种不能再简化的操作
  • 公用函数库:系统调用的组合拳
  • Shell:命令解释器,可编程

查找特定文件

find

1
2
# 语法:
find path [options] params
  • 在指定目录下查找文件

示例:

1
find / -name "target.java"
1
2
# 以target开头 不区分大小写 支持正则表达式 
find / -iname "target*"
截屏2021-01-12 下午11.04.26

检索文件内容

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

统计相同行出现的次数并列出统计结果

截屏2021-01-12 下午11.35.31

批量替换文本内容

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