运维笔记之linux运维管理基础

课程链接

001_课程介绍_哔哩哔哩_bilibili

编辑器vi/vim

在 CentOS 上使用 Vim 编辑器时,可以进行更多操作,包括复制、粘贴、删除、查找等。以下是一些常用的 Vim 操作命令:

  1. 复制光标所在行:按下 yy 键。
  2. 剪切光标所在行:按下 dd 键。
  3. 粘贴剪切或复制的文本:按下 p 键。
  4. 撤销上一次操作:按下 u 键。
  5. 跳转到文件开头:按下 gg 键。
  6. 跳转到文件结尾:按下 G 键。
  7. 跳转到第 n 行:按下 nG 键,其中 n 是行号。
  8. 智能对齐光标所在行:按下 = 键。
  9. 保存编辑内容:按下 ZZ 键,或者先按下 :w 命令,然后按下 Enter
  10. 不保存编辑内容退出 Vim:按下 :q! 命令,然后按下 Enter
  11. 在当前行上方插入文本:按下 o 键。
  12. 在当前行下方插入文本:按下 O 键。
  13. 在正常模式下,按下 / 后跟你要查找的文本,然后按下 Enter,Vim 将移动到匹配的文本位置。

服务管理systemctl

命令格式

  • centos6
service 服务名 start|stop|restart|status
# 服务路径
/etc/init.d/
  • centos7
systemctl start|stop|restart|status 服务名 
# 服务路径
/usr/lib/systemd/system/

Linux系统七个运行级别 systemctl

  • centos6
Linux系统有七个运行级别,这些级别代表了操作系统当前正在运行的功能级别。以下是这七个运行级别的具体说明:

* 运行级别0:系统停机状态。这是关机状态,系统默认运行级别不能设为0,否则不能正常启动。
* 运行级别1:单用户工作状态。这是root权限,用于系统维护,禁止远程登陆。在忘记root密码时,一般会使用这个运行级别进入系统修改密码。
* 运行级别2:多用户状态(没有NFS)。这是没有网络连接的状态。
* 运行级别3:完全的多用户状态(有NFS)。登陆后进入控制台命令行模式。这是Linux很常见的运行级别。
* 运行级别4:系统未使用,保留。
* 运行级别5:X11控制台,登陆后进入图形GUI模式。这是图形模式。
* 运行级别6:系统正常关闭并重启。默认运行级别不能设为6,否则不能正常启动。

请注意,标准的Linux运行级别为3或5。
- init 5 切换运行级别
- chkconfig --list 查看服务启动状态
  • centos7
CentOS7中运行级别简化为:

- multi-user.target 等价于原运行级别3
- graphical.target  等价于原运行级别5
- systemctl get-default 查看当前的运行级别
- systemctl set-default 修改运行级别
- systemctl list-unit-files 查看服务启动状态
- systemctl stop firewalld.service 关闭防火墙
- systemctl disable firewalld.service 关闭防火墙开机自启动

关机重启命令shutdown

  • shutdow 默认一分钟后关闭系统
- shutdown -c 取消关机
- shutdown now 立马关闭系统
- shutdown 5 5分钟后关闭系统
- shutdown 17:30 在17:30分关闭系统
  • sync 将内存数据同步到磁盘
  • halt 停机 关闭系统但不断电 相当于shutdown -H now
  • poweroff 关机断电 相当于 shutdown -P/h now
  • reboot 重启 相当于shutdown -r now

常用基础命令bash

帮助类命令

  • 获取外部命令帮助信息man
- man python3 
- man -f python3 
- python3 --help
  • 获取内部命令帮助信息help
  • 判断是内部/外部命令type
  • 显示历史输入命令history
  • 常用快捷键
- ctrl+c 停止进程
- ctrl+l 清盘,相当于clear,彻底清屏reset
- tab 自动补齐
- 上下键选择已输入命令

目录类命令

  • pwd 显示当前工作目录的绝对路径
- pwd -P 显示物理路径(非软链接路径)
  • ls 列出目录内容list
- ls -lh 目录 :查看目录内容并分行显示
- ls -a 显示所有内容包含隐藏内容
- ls -l 按行显示文件/文件夹信息
- ll 等同于 ls -l 命令
  • cd 切换目录/路径
- cd /root/etc 绝对路径切换,以/开头
- cd ../bin 相对路径切换
- cd - 返回之前的目录/路径
- cd 回到当前用户主目录
  • su 切换用户
- su oracle 切换到Oracle用户
- exit 从Oracle用户退回
- su - oracle 切换Oracle用户并加载相关启动项
  • mkdir 创建空文件夹
- mkdir dir_a 当前目录下创建dir_a目录
- mkdir /dir_a 在/目录下创建dir_a目录
- mkdir dir_a dir_b 当前目录下同时创建dir_a、dir_b目录
- mkdir -p dir_a/dir_b 当前目录下级联创建dir_a/dir_b目录
  • rmdir 删除空文件夹 用法类似mkdir
  • touch 创建空文件
  • vi/vim 编辑指定文件,如果文件不存在则创建(创建后直接关闭则不保存)
  • cp 复制文件/文件夹
- cp source dest 复制文件/文件夹source到指定文件/文件夹夹dest
- cp -r source dest 递归复制文件夹source到指定文件夹dest
- \cp source dest 复制文件/文件夹source到指定文件/文件夹夹dest,如果存在同名文件/文件夹不再询问直接覆盖
- \cp 原生命令
  • alias 查看命令别名
  • rm 删除文件/文件夹
- r 递归删除目录中所有内容
- f 强制执行删除操作,不进行确认
- v 显示指令的详细执行过程
  • mv 移动文件/目录货重命名
mv 源文件/目录 目标文件/目录
  • cat 查看文件内容
- cat -n 文件名 显示行号,包括空行
  • more 文件内容分屏查看器
- 室白键 (space) 代表向下翻一页
- Entere 代表向下翻[一行]
- q 代表立刻离开 more ,不再显示该文件内容
- Ctrl+F 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
  • less 分屏显示文件内容(根据显示需要加载内容,对于显示大型文件具有较高的效率)
- 空白键 向下翻动一页
- [pagedown] 向下翻动一页
- [pageup] 向上翻动一页
- /字串 向下搜寻[字串]的功能:n:向下查找;N:向上查找
- ?字串 向上查找向上搜寻[字串]的功能:n:向下查找;N:向上查找
- q 离开less程序
- g 回到文件开头
- shift+g 跳到文件结尾
  • echo 输出内容到控制台
- -e 支持反斜线控制的字符转换
- \\ 输出\本身
- \n 换行
- \t 制表符(Tab键)
- $ 显示系统变量,可按tab键查询
  • 输入输出重定向 >> 追加

- ls -1 >文件 列表的内容写入文件 a.txt 中(覆盖写)
- ls -al >>文件 列表的内容追加到文件 aa.txt 的末尾
- cat 文件1>文件2 将文件1的内容覆盖到文件2
- echo “内容”>>文件 
  • head 用于显示文件的开头部分内容(默认情况显示文件的前10行内容)
- head文件 查看文件头10行内容
- head-n 5文件 查看文件头5行内容,5可以是任意行数
  • tail 用于输出文件的尾部的内容(默认显示文件的后10行内容)
- tail 文件 查看文件尾部10行内容
- tail -n5 文件 查看文件尾部5行内容,5可以是任意行数
- tail -f 文件 实时追踪该文档的所有更新
  • ln 软链接
- ln -s 原文件或用录 软链接名 软链接
- ln 原文件 软链接名 硬链接
- rm-rf 软链接名 删除软链接
- rm-rf 软链接名/ 会把软链接对应的真实目录下内容删掉
- 软连接指向的文件/目录已不存在,再打开软链接会提示文件目录不存在
  • history 查看执行命令的历史
- history 10 显示最近执行的10条命令
- !命令记录号 重新执行该命令
- history -c 情况历史命令记录

时间日期类命令

  • date 显示系统时间
- date +%Y 显示年份
- date +%y 显示年份后两位
- date +%m 显示月份
- date +%d 显示日
- date +%s 显示时间戳
- date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
- date -d '1 days ago 显示昨天时间
- date -d '-1 days ago 显示明天时间
- date -s "2017-06-19 20:52:18" 设置系统时间
  • ntpdate 连接时间同步服务器并同步时间
  • cal 查看日历
- cal -3 查看以本月为轴的三个月的日历
- cal -m 以周一为每周第一天显示本月日历
- cal 2022 查看2022年日历
- cal -y 查看系统日期本年度的日历信息

用户组管理相关

将用户归入指定用户组,进行统一管理
linux下创建用户,默认为每个用户创建一个与用户同名的用户组
可查看/etc/group文件

- groupadd 组名 :添加新用户组
- usermod -g 组名 用户 :修改用户的用户组
- groupmod -n 新组名 旧组名 :修改用户组名称
- groupdel 组名 :删除用户组

用户管理相关

  • useradd 添加新用户
- useradd 用户名 :添加新用户
- passwd 用户名 :修改用户密码
- id 用户名 :查看用户信息
- cat /etc/passwd :查看用户列表
- useradd -d /home/div dive :为新用户指定主目录
- useradd -g 组名 用户名 :添加新用户到用户组
  • userdel 删除用户
- userdel tony 只删除用户,不删除主目录文件
- userdel -r tony 删除用户同时删除主目录
  • su 切换用户
- su 用户名 
- exit  :返回原有用户
- who am i  :当前系统用户
- whoami :当前会话用户
- su - 用户名
  • sudo 临时赋予普通用户root权限(需要root用户在/etc/sudoers里配置)
- sudo 命令 :临时执行超权限命令

文件权限管理

  • 文件属性
    ![[Pasted image 20240111161610.png]]
- 文件类型 :- 文件;d 目录;c 设备;b 块存储;l 链接
- 文件权限 :r 可读;w 代表可以修改文件,不代表可以删除文件,删除文件需要对文件所属目录有读写权限;x 可执行
- 文件夹权限 :r 查看目录内容;w 可修改;x 可进入该目录
- 第11位 :文件 硬链接数量;文件夹 内部文件数量
  • chmod 更改权限
- chmod [{ugoa}{+--}{rwx}] 文件或目录 :u 用户;g 用户组;o 其他用户;a 所有用户;+ 增加权限;- 删除权限;= 赋予权限;r 读;w 写; x 执行
- chmod a=rx 赋予所有用户读和执行权限
- chmod [421] 文件或目录 :第一个数字 用户;第二个数字 用户组;第三个数字 其他用户;r=4,w=2,x=1,rwx=4+2+1=7
- chmod 777 文件/目录 :赋予所有用户读写执行权限
- chmod -R 777 目录 :递归赋予所有用户该目录下所有文件/目录的读写执行权限
  • chown 改变所有者
- chown [选项] [最终用户] [文件或目录] :改变文件或者目录的所有者
- chown -R 最终用户 目录 :递归修改目录的所有者
  • chgrp 改变所属组

搜索查找类命令

  • find 查找文件或者目录
    find 指令将从指定目录向下递归遍历各个子目录,将满足条件的文件显示在终端。
    ![[Pasted image 20240112095228.png]]
- find [搜索范围] [选项] :语法格式,如果不指定搜索范围则默认从当前目录开始查找
- -size :+ 大约;- 小于
  • locate 快速定位文件路径
    locate 指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位指定的文件。
    Locate 指令无需遍历整个文件系统,查询速度较快。
    为了保证查询结果的准确度,管理员应该使用updatedb定期更新 locate数据库。
- updatedb :更新locate数据库
- locate 关键字 :按关键字模糊查询
- which 命令 :查询命令路径(包含别名)
- whereis 命令 :查询命令路径
  • grep 过滤查找及’|'管道符
- grep 选项 查找内容 源文件 :语法
- 选项 :-n 显示匹配行和行号
- grep -n 关键字 文件 :在文件中查找关键字并显示匹配行和行号
- ls | grep 关键字 :在ls查询结果中过滤出包含关键字的内容
- wc 文件 :统计文件内容,包含行数、单词数、字节数等
- grep -n 关键字 文件 | wc :统计grep查询结果

压缩和解压缩类

  • gzip/gunzip 压缩/解压缩
    只能压缩文件,不能压缩目录;
    不保留原有文件;
    同时压缩多个文件会产生多个压缩包。
- gzip 文件 :只能将文件压缩为.gz文件
- gunzip .gz文件 :接压缩文件
  • zip/unzip 压缩/解压缩
    zip在linux和windows系统都能使用,且保留源文件。
    ![[Pasted image 20240112104008.png]]
- zip [选项] 文件名.zip 文件/目录 :将文件/目录压缩为.zip文件
- unzip [选项] 目录 文件名.zip :将.zip文件解压到指定目录
  • tar 打包
    ![[Pasted image 20240112104516.png]]
- tar [选项] 包名.tar.gz 文件/目录 :将指定的文件/目录打包成.tar.gz文件
- tar -zcvf 包名.tar.gz 文件1 文件2 目录1 目录2 :将所列内容打包并压缩成包名.tar.gz,执行过程中显示相关信息
- tar -zxvf 包名.tar.gz -C 目录 :将文件解压到指定目录

磁盘查看和分区类

  • tree 查看目录树状结构
- tree 目录 :语法
- tree 目录 -L n :显示目录信息直到指定层级n
  • du 查看目录空间使用情况
    ![[Pasted image 20240112110655.png]]
- du [选项] 目录 :显示目录下每个子目录的磁盘使用情况
- du --max-depth=1 -ah :只显示当前目录下一级目录的统计信息
  • df 查看磁盘空间使用情况
    ![[Pasted image 20240112144208.png]]
- df 选项 列出文件系统的整体磁盘使用量
- df -h :显示磁盘挂载分区的使用情况
- free -h :显示当前内存的使用情况
  • Isbk 查看设备挂载情况
    ![[Pasted image 20240112144804.png]]
  • mount/umount 挂载/卸载
- mount [-t vfstype] [-o options] device dir :挂载设备
- umount设备文件名或挂载点 :卸载设备
- lsblk :查看设备挂载情况
- mkdir /mnt/cdrom :创建目录
- mount /dev/rom /mnt/cdrom :挂载光驱到挂载点
- mount 设备名称/挂载点 :卸载
- vim /etc/fstab :修改挂载配置文件,实现开机自动挂载
  • fdisk 磁盘分区
    该命令必须在 root用户下才能使用。
    一块磁盘最多划分4块主分区。
- fdisk -l :查看磁盘分区详情
- fdisk 硬盘设备名 :对新增硬盘进行分区操作
- mkfs -t xfs /dev/sdb1 :指定以xfs方式格式化磁盘分区
- mkdir /usr01 :新建挂载点
- mount /dev/sdb1 /usr01 :挂载新分区到usr01目录
- vim /etc/fstab :编辑配置文件,实现开机自动挂载

进程管理类

计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。
启动之后一只存在、常驻内存的进程,一般被称作“服务”(service)。

- ls /usr/lib/systemd/system | grep d.service | wc :统计系统守护进程
  • ps 查看当前系统进程状态
    ![[Pasted image 20240112161005.png]]
    如果想查看进程的CPU占用率和内存占用率,可以使用aux;
    如果想查看进程的父进程I可以使用-ef
- ps :显示当前用户启用的进程
- ps aux | grep xxx :查看系统中所有进程
- ps -ef | grep xxx :可以查看子父进程之间的关系
  • kill 终止进程
- kill [选项] 进程号 :通过进程号杀死进程
- 选项 :-9 强迫进程立即执行
- killall 进程名称 :通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用 
  • pstree 查看进程树
- pstree [选项]
- 选项 :-p 显示进程pid;-u 显示进程用户(用户变动时显示进程用户)
  • top 实时监控系统进程状态
    按下shift+N按进程号倒序显示,按下shift+p按CPU使用率倒序显示,按下shift+m按mem使用率倒序显示,按下q退出,按下u可以输入用户过滤,按下k可以直接输入pid结束进程
- top [选项] :显示系统实时信息
- 选项 :-d 指定更新间隔(秒),系统默认3秒;-i 不显示闲置或僵死进程;-p 通过指定pid来监控指定进程
  • netstat 查看网络状态和端口占用信息
    ![[Pasted image 20240112170616.png]]
- netstat -anp | grep 进程号 :查看该进程网络信息
- netstat -nlp | grep 端口号 :查看网络端口号占用情况

  • crontab 系统定时任务
    ![[Pasted image 20240112172627.png]]
- systemct1 restart crond :重启定时任务守护进程
- crontab [选项] :语法
- 选项 :-e 编辑定时任务;-l 显示用户定时任务;-r 删除所有定时任务
- crontab里的 * * * * * 分别代表分钟、小时、日、月、周

软件包管理

rpm软件包管理工具

![[Pasted image 20240115094947.png]]

  • 查看软件包安装信息
- rpm -qa :查看已安装软件包,可以使用rgrep管道过滤
- rpm -qi 软件包名称 :查询指定软件包的详细信息
  • 软件包卸载
- rpm -e 软件包名称 :卸载指定的软件包
- rpm -e -nodeps 软件包名称 :不考虑包依赖关系,直接卸载指定软件包
  • 软件包安装
- rpm -ivh 软件包名称 :安装指定软件包

yum

基于 RPM 包管理,能够从指定的服务器自动下载 RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
![[Pasted image 20240115100431.png]]

- yum [选项] [参数] :语法
- 选项 :-y 对所有交互都选择y
- 
  • 修改yum源
- yum instal1 wget :下载安装wget包
- cd /etc/yum.repos.d/
- cp CentoS-Base.repo  CentOS-Base.repo.backupe :备份原有repo文件
- wget http://mirrors.aliyun.com/repo/Centos-7.repo -d /etc/yum.repos.d/CentoS-Base.repo //阿里云
- wget http://mirrors.163.com/.help/Centos7-Base-163.repo -d /etc/yum.repos.d/CentoS-Base.repo //网易163 

shell 命令

Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

脚本格式

- #!/bin/sh :脚本开头,指定默认解释器
- 采用bash或sh+脚本的相对路径或绝对路径(不需要具有可执行权限+x) :执行方式1
- 采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)  :执行方式2
- 在脚本的路径前加上.或者 source  :执行方式3(. 表示使用bash;source 表示使用shell),在当前进程环境中直接运行脚本

环境变量

- echo  $变量名 :查看指定环境变量
- env :查看全部环境变量
- printenv :查看全部环境变量
- printenv 变量名 :查看指定环境变量
- set :查看用户自定义变量定义语句

自定义变量

- 变量名=变量值 :自定义变量语句不能有空格
- export 变量名 :将变量申明为系统变量
- readonly 变量名=变量值 :自定义只读变量 
- unset 变量名 :销毁自定义变量(不能销毁只读变量)

特殊变量

  • $n
    n为数字,$0代表该脚本名称,$1-$9 代表第一到第九个参数,十以 $n上的参数,十以上的参数需要用大括号包含,如 ${10}
- echo "Hello,$1." :调用第一个传入参数
- bash hello.sh xiaoming :以xiaoming为第一个位置参数调用hello.sh脚本
  • $#
    获取所有输入参数的个数
  • $*
    代表命令行中所有的参数,s*把所有的参数看成一个整体
  • $@
    也代表命令行中所有的参数,不过s@把每个参数区分对待,可以使用便利循环调用参数
  • $?
    最后一次执行脚本的返回状态。如果这个变量的值为0,命令正确执行:如果这个变量的值为非 0则证明命令执行不正确。
- echo $? :值为0,表示最后一次执行的命令被正确执行

运算符

- expr 1 [+,-,\*,\/] 2 :计算1和2的加减乘除的值
  • $(())
- echo $((8*8/4))
  • $[]
- echo $((8*8/4))
  • $()/“``” 命令替换
- a=$(expr 1 + 2)
- a=`expr 1 - 2`
- a=$[(2+3)*4]

条件判断

  • test condition :condition前后都有空格
- test $a = 1 :判断$a是否等于1,如果等于返回0($?),否则返回非0值
- test $a != 1 :判断$a是否等于1,如果不等于返回0($?),否则返回非0值
  • [ condition ] :condition前后都有空格
- [ $a = 1 ] :判断$a是否等于1,如果等于返回0($?),否则返回非0值
- [ $a != 1 ] :判断$a是否等于1,如果不等于返回0($?),否则返回非0值

常用判断

  • 数值比较
- -eq :等于 (equal)
- -lt 小于 (less than)
- -gt 大于(greater than)
- -ne 不等于(not equal)
- -le 小于等于(less equal)
- -ge 大于等于(greater equal)
- [ 2 -lt 8 ] :判断2是否小于8
  • 文件/目录权限判断
- -r :有读的权限(read)
- -w :有写的权限(write)
- -x :有执行的权限(execute) 
- [ -r add.sh ] :判断文件add.sh是否有读取权限
  • 文件类型判断
- -e :文件存在(existence)
- -f :文件存在并且是一个常规的文件 (file)
- -d :文件存在并且是一个目录 (directory)

多条件判断&&/||

  • && 和
  • || 或
- [ 1 -eq 2 ] && echo Yes || echo No :如果1=2输出Yes否则输出No
- [ 25 -gt 18 -a 25 -lt 35] && echo Yes || echo No :如果25大于18且小于35输出Yes否则输出No(-a 表示and)

流程控制

”;“代表两条命令分别执行

if
- 语法1(单分支)
if [ condition ];then
   程序
fi
- 语法2(单分支)
if [ condition ]
then
  程序
fi
- 语法3(多分支)
if [ condition1 ]
then
  语句1
elif [ condition2 ]
then
  语句2
else
  语句
fi
case

(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束;
(2)双分号“;;”表示命令序列结束,相当于java 中的 break;
(3)最后的“*)”表示默认模式,相当于java 中的 default。

case $变量名 in
"值1")
  如果变量的值等于值 1,则执行程序 1
;;
"值2”)
如果变量的值等于值 2,则执行程序 2
;;
...省略其他分支...
*)
  如果变量的值都不是以上的值,则执行此程序
;;
esac
for
  • 语法1
for ((初始值;循环控制条件;变量变化))
do
  程序
done
  • 语法2
for 变量 in 值1 值2 值3
do 
  程序
done

{1…100}表示从1到100步长为1的序列

while
  • 语法
while [ 条件判断式 ] 
do
  程序
done

read 读取控制台的输入

  • 语法
read (选项) (参数)
选项:
 -p:指定读取值时的提示符;
 -t:指定读取值时等待的时间(秒),如果不加表示一直等待
参数:
 变量:指定读取值的变量名
  • 示例
#!/bin/bash
read -t 10 -p "Enter your number:" num
if [ $num ]
then
        echo "You input the number is $num"
else
        echo "Time out"
fi

函数

系统函数
  • basename 显示文件名(最后一个/之后的string)
basename /root/scripts/read.sh  .sh :获取去除后缀的文件名
  • dirname 显示文件所在路径(最后一个/之前的string)
echo $(pwd)/$(basename ./read.sh) :显示文件的绝对路径
自定义函数
  • 语法
[ function ] funname[()]
{
  Action;
  [return int;]

}

使用要点:
(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言样先编译。
(2)函数返回值,只能通过 $? 系统变量获得,可以显示加: return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值n(0-255)。

自定义归档脚本
#!/bin/bash
if [ $# -ne 1 ]
then
        echo "Bad parameter number,a directory is need!"
        exit
fi

if [ -d $1 ]
then
        echo "The directory you input is "$1
else
        echo "The directory you input $1 is not exists!"
        exit
fi

filename=$( basename $1 )
path=$( cd $( dirname $1) ; pwd )
echo "The directory you want to archive is "$path/$filename
Date=$( date +%Y%m%d )
tarfile=$filename"_archive_"$Date.tar.gz
echo "Default archive filename is "$tarfile
dest=/root/archive/$tarfile
echo "Default directory is "$dest

echo "Archive action is running ..."
tar -czf $dest $path/$filename
if [ $? -eq 0 ]
then
        echo
        echo "Atchive action is done!"
else
        echo "Atchive action is not done!"
fi
exit

正则表达式
  • 特殊字符
- ^ :匹配一行的开头 cat /etc/passwd | grep ^root
- $ : 匹配一行的结束 cat /etc/passwd | grep bash$
- ^$ :匹配为空的行 cat /etc/passwd | grep -n ^$ 
- . :匹配一个任意的字符
- * :不单独使用,和前一个字符连用,表示匹配前一个字符 0 次或多次
- [] :表示匹配某个范围内的一个字符
- [6,8] :匹配6或者8
- [0.9] :匹配一个0-9 的数字
- [0-9]* :匹配任意长度的数字字符串
- [a-z] :匹配一个a-z 之间的字符
- [a-z]* :匹配任意长度的字母字符串
- [a-c,e-f] :匹配a-c 或者 e-f之间的任意字符
- \ :表示一个特殊的转义符
- -E :使用扩展的正则表达式 echo "15912345678” grep -E 1[34578][0-9]{9}$
文本处理工具
  • cut 在文本中剪切数据
- cut [选项] filename :语法
- 选项参数 :-f 列号;-d 分隔符,默认为制表符;-c 按字符串进行分割,后加数字表示取第几列
- cut -d “ ” -f 2,3 cut.txt :用空格拆分文件cut并截取第2,3列
- cat /etc/passwd | cut -d ':' -f 5- :用:拆分文件passwd并截取第5以后的
- ifconfig ens192 | grep netmask | cut -d " " -f 10,13,16 :查看ip配置ens192的IP地址,掩码和网关
  • awk 以空格为默认分割符对文本进行切片处理
- awk [选项参数] ‘/pattern1/faction1 /pattern2/faction2}...’ filename :语法
- 选项参数 :-F 指定文件分隔符;-v 赋值一个用户自定义变量
- cat /etc/passwd | awk -F : '/^root/{print $7}' :用:分割passwd文件,找到以root开头的行打印第7列
- cat /etc/passwd | awk -F : '/^root/{print $1","$7}' :用:分割passwd文件,找到以root开头的行打印第1列和第7列并以,分割
- top -n 1 | grep [1-9]"\."[0-9] >> /tmp/top.log :将top查询结果进行过滤,找到有数值的保存到top.log文件
- ifconfig | awk '/netmask/ {print $2";"$4";"$6}' :查看ip配置的IP地址,掩码和网关

你可能感兴趣的:(运维笔记,运维,笔记,linux)