浅谈Linux

Linux体系结构

体系结构主要分为用户态(用户上层活动)和内核态
浅谈Linux

  1. 内核:本质是一段管理计算机硬件设备的程序
  2. 系统调用:内核的访问接口,是一种能再简化的操作
  3. 公用函数库:系统调用的组合拳
  4. Shell:命令解释器,可编程

查找

find命令用于查找文件

find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等…

基本格式:

find path expression 
  1. 按照文件名查找
    1. find / -name xxx #在根目录下查找xxx文件,需要root权限,表示在整个硬盘找
    2. find /usr -name xxx #表示在/usr目录下查找xxx文件
    3. find . -name xxx # 表示在当前目录下查找
    4. find / -name "* test* " #表示在根目录下查找包含test字符串的文件
  2. 按照文件特征找
    1. find / -amin -10 #查找在系统中最后10分钟访问的文件
    2. find / -time -2 #查找在系统中最后48小时访问的文件
    3. find / -empty #查找在系统中为空的文件或文件夹
    4. find / -group cat #查找在系统中group属于cat的文件
    5. find / -mmin -5 #查找在系统中最后5分钟里修改过的文件
    6. find / -mtime -1 #查找在系统中最后24小时修改过的文件
    7. find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
    8. find / -size -1000k   #查找出小于1000KB的文件
grep命令用于查找文件中的内容

grep用于查找文件里符合条件的字符串,并打印出匹配的行
基本格式:

#不规定文件的话,grep会从标准输入中获取数据
find [options] pattern file 
主要参数[options]

-c:只输出匹配行的计数
-i:不区分大小写
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行

正则表达式(pattern)
  • \: 忽略正则表达式中特殊字符的原有含义,即转义字符
  • ^:匹配正则表达式的开始行
  • $: 匹配正则表达式的结束行
  • <:从匹配正则表达 式的行开始
  • >:到匹配正则表达式的行结束
  • [ ]:单个字符,如[A]即A符合要求
  • [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求
  • .:所有的单个字符
  • 星号:有字符,长度可以为0
正则表达式实例
  1. n位的数字:^\d{n}$
  2. m-n位的数字:^\d{m,n}$
  3. 至少n位的数字:^\d{n,}$
  4. 数字:^ [0-9]*$
  5. 常用正则表达式实例
实例
  • grep ‘test’ d*  #显示所有以d开头的文件中包含 test的行
  • grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中包含test的行
管道操作符 |

可将指令连接起来,前一个指令的输出作为后一个指令的输入

#查找当前目录下所有文件中包含"target"字符串的文件
find ~ | grep "target"

统计文件内容

awk:一次读取一行文本,按输入分隔符进行切片,切成多个部分,将切片直接保存在内建的变量中,$1,$2…($0表示行的全部);直接对单个切片的判断,支持循环判断,默认分隔符为空格
基本格式:

awk [options] 'cmd' file

浅谈Linux
浅谈Linux
-F表示以什么作为分隔符
浅谈Linux
NR表示行数
浅谈Linux

面试常用方式
awk '{print $1,$4}' xxx #打印xxx文件中第1列和第4列下的信息
awk '$1=="tcp" && $2==1{print $0}' xxx #打印第1列中为tcp且第2列为1的整行
#awk for循环
awk '{enginearr[$1]++}END{for(i in enginearr) print i "\t"enginearr[i]}'
批量替换文件中内容

sed,stream editor,即流编辑器
基本格式:

sed [option] 'sed command' filename
面试常用方式
 # 在xxx文件中筛选中以Str开头的行,用String替换Str
sed -i -s/^Str/String/' xxx
 # 在xxx文件中筛选中以"."结尾的行,注意特殊字符需要转义,用;替换.
 sed -i 's/\.$/\;/' xxx