我操作Linux系统的一些命令

一 概述

Linux操作系统的体系结构主要分为用户态和内核态,用户态通过系统公共函数进行系统调用以使用内核态的功能。Linux中的内核本质为一段管理计算机硬件设备的程序,系统调用为内核的访问接口,是一种不能再简化的操作,公共函数将系统调用进行封装提供给用户使用。

shell:命令解释器,我们可以进行shell编程,shell脚本同样对系统调用进行了一次封装。

二 grep检索文件内容

grep用于在文本中执行关键字搜索,并显示匹配的结果

grep --help

Usage: grep [OPTION]... PATTERNS [FILE]...
        Search for PATTERNS in each FILE. //查找指定文件中符合条件的字符串
        Example: grep -i 'hello world' menu.h main.c
        PATTERNS can contain multiple patterns separated by newlines.

格式

grep [参数] [文件]

grep命令的参数及其作用

参数作用
-b将可执行文件(binary)当作文本文件(text)来搜索
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择——仅列出没有"关键词"的行

例子

grep ''test" target*

从target开头的文件中,查出含有test字符串的信息,结果会返回含有test字符串的行信息

从日志文件中查出目标信息

要求:从海量文件中共直接查出某字段

命令:grep "test" 文件 | grep -o "grep\[[0-9a-z]*\]"

[]为特殊字符需要通过转义字符\[ \]进行转义。

命令:grep -c "payMethod" all.log

二 管道操作符 |

管道操作符 | 可以将指令连接起来,前一个指令的标准输出作为后一个指令的标准输入。

管道命令只能处理前一个命令的正确输出,错误输出则不会进行处理,同时管道右边的命令必须能接收标准输入输出流,否则左侧传递过来的数据会被抛弃,如echo

常见的能够接收标准输入输出流的命令

sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

查询系统的进程信息:ps -ef

从进程信息中查出属于zero的进程信息:ps -ef | grep zero

从zero进程信息中过滤grep命令本省:ps -ef | grep zero | grep -v "grep"

三 find命令

find命令用于按照指定条件来查找文件。

find [查找路径] 寻找条件 操作

find命令中的参数及作用

参数参数的作用
-name匹配名称
-perm匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间(-n指n天之内,+n指n天以前)
-atime -n +n匹配访问文件的时间(-n指定n天以内,+n指定n天以前)
-ctime -n +n匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser

匹配无所有者的文件

-nogroup匹配无所有组者的文件
-newer f1 !f2匹配比文件f1新但比f2旧的文件
--type b/d/c/p/l/f匹配文件类型(后面的字母依次表示为:块设备,目录,字符设备,管道,链接文件,文本文件)
-size匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune忽略某个目录
-exec ......{}\;后面可跟用于进一步处理搜索结果的命令,{}表示find命令搜索出的每一个文件,并且结尾必须是\;

find + path:递归列出path路径下的所有文件及目录。

查询指定文件名的文件:find -name "name"

  1. find dir -name "name" //精确查找文件
  2. find dir -name "name*" //模糊查找文件
  3. find dir -iname "target*" //不区分文件名大小写查找文件

四 sed完成文件内容的批量替换

在输出内容上修改不会影响文件本身:sed '^tes/text/g' target.txt 

^tes表示tes为将被替换掉的内容

text表示^tes会被text替换

在文件本身上对内容修改:sed -i '^tes/text/g' target.txt 

五 awk对文件中的内容进行统计

将文件中的第一列和第三列数据输出:awk '{print $1,$3}' fileName

将文件中的每一列都输出:awk '{print $0}' fileName

将文件中第一列为tcp且第三列为tcp1的数据输出:awk 'S1 == "tcp" && $3 == "tcp1" {print $0}' awk.txt

在上述基础上输出表头:awk '(S1 == "tcp" && $3 == "tcp1") || NR==1 {print $0}' awk.txt

awk默认以空格将字段进行分隔。

以其他符号作为分隔符:awk -F "符号" '{print $2}' fileName

统计某些内容出现的次数: 

grep "test" target.txt | grep -o "grep\[[0-9a-z]*\]" | awk '{greparr[$1]++}END{for(i in greparr)print i "\t" greparr[i]}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值