运维笔记之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 ]
thenecho "You input the number is $num"
elseecho "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 ]
thenecho "Bad parameter number,a directory is need!"exit
fiif [ -d $1 ]
thenecho "The directory you input is "$1
elseecho "The directory you input $1 is not exists!"exit
fifilename=$( 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 "$destecho "Archive action is running ..."
tar -czf $dest $path/$filename
if [ $? -eq 0 ]
thenechoecho "Atchive action is done!"
elseecho "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地址,掩码和网关

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB聚合:$set

聚合$set阶段可以为文档添加新的字段。$set输出的文档包含输入文档中的所有现有字段和新添加的字段。$set是$addFields的别名,从MongoDB4.2开始支持。$set和$addFields等价于$project阶段,这两个阶段都等同于 $project 阶段,后者明确指定输入…

黑马程序员——javase基础——day05——面向对象基础

目录: 面向对象 面向对象介绍为什么要用面向对象编程面向对象.重点学习什么?类和对象 什么是类什么是对象对象的属性和行为类的定义对象的使用学生类的定义和使用对象内存图 Java内存分配单个对象多个对象思考:多个引用指向相同成员变量和局部变量的区…

未来能源转型之路:2023年第十三届中国国际储能大会启示录

在2023年第十三届中国国际储能大会上,全球各地的能源专家、学者和企业代表齐聚一堂,共同探讨了储能技术在推动能源转型中的重要作用。对于我们普通人来说,从这场大会中可以学到什么呢? 一、储能技术是未来能源发展的关键 随着可再…

《剑指 Offer》专项突破版 - 面试题 15 : 字符串中的所有变位词(C++ 实现)

题目链接:LCR 015. 找到字符串中所有字母异位词 - 力扣(LeetCode) 题目: 输入字符串 s1 和 s2,如何找出字符串 s2 的所有变位词在字符串 s1 中的起始下标?假设两个字符串中只包含英文小写字母。例如&…

面试经典150题(88-89)

leetcode 150道题 计划花两个月时候刷完,今天(第四十四天)完成了2道(88-89)150: 88.(22. 括号生成) 题目描述: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效…

(八)Java 循环结构 —— for、while、do...while

目录 一. 前言 二. Java 循环结构 2.1. for 循环 2.2. 增强 for 循环 2.3. while 循环 2.4. do…while 循环 2.5. continue 关键字 2.6. break 关键字 三. 课后习题 一. 前言 循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件&…

html+js网页连接MQTT服务器new Paho.MQTT.Client

网页完整代码示例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&quo…

YOLOv5改进 | 检测头篇 | 利用DynamicHead增加辅助检测头进行针对性检测(让小目标无所遁形)

一、本文介绍 本文给大家带来的改进机制是针对性的改进,针对于小目标检测增加P2层,利用DynamicHead(原版本一比一复现,全网独一份,不同于网上魔改版本)进行检测,其中我们增加P2层其拥有更高的分辨率,这使得模型能够更好地捕捉到小尺寸目标的细节。在这些的基础上配合Dyn…

Python爬虫实战014:利用requests库实现自动评论

文章目录 代码需要修改的参数如何修改headers 中的cookiedata中的contentdata中的articleId全网文章自动评论代码 import requests# 固定写法不要动 url = "https://blog.csdn.net/phoenix/web/v1/comment/submit" headers = {user-agent:

基于springboot+vue的社区团购系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

人工智能 AI 如何让我们的生活更加便利

每个人都可以从新技术中获益&#xff0c;一想到工作或生活更为便利、简捷且拥有更多空余时间&#xff0c;谁会不为之高兴呢&#xff1f;借助人工智能&#xff0c;每天能够多一些空余时间&#xff0c;或丰富自己的业余生活&#xff0c;为培养日常兴趣爱好增添一点便利。从电子阅…

【PostgreSQL】函数与操作符-数据类型格式化函数

PostgreSQL格式化函数提供一套强大的工具用于把各种数据类型 &#xff08;日期/时间、整数、浮点、数字&#xff09; 转换成格式化的字符串以及反过来从格式化的字符串转换成 指定的数据类型。下表列出了这些函数。这些函数都遵循一个公共的调用规范&#xff1a; 第一个参数是待…

Mybatis 分页

目录 一、Mybatis Plus 分页 1. 配置 &#xff08;1&#xff09;依赖 &#xff08;2&#xff09;创建MybatisPlusConfig配置类&#xff0c;配置分页插件 2. 纯代码分页查询 &#xff08;1&#xff09; 执行查询&#xff08;这里调用的是IService接口的page方法&#xff0…

微信小程序(六)tabBar的使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. 标签栏文字的内容以及默认与选中颜色 2. 标签栏图标的默认样式与选中样式 3. 标签选项路径页面 4.标签栏背景颜色 &#x1f43c;&#xff08;文末补充&#xff09;设置标签栏后为什么navigator标签无法跳转页面了 温…

【Dynamo学习笔记】Dynamo for Revit建模基础

目录 前言1 Revit模型的结构2 图元的操作2.1 图元的选择2.2 图元参数的读取和写入2.3 图元的创建2.3.2 创建轴网2.3.2 创建结构柱2.3.3 创建结构框架2.3.4 创建墙体 3 自定义节点 参考资料&#xff1a; &#xff08;1&#xff09; 罗嘉祥&#xff0c;宋姗&#xff0c;田宏钧. 《…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用相机日志跟踪功能1.引用合适的类文件2.通过NEOAPI SDK使用相机日志跟踪功能3.通…

burp靶场--ssrf

burp靶场–ssrf 1.什么是ssrf 服务器端请求伪造是一种 Web 安全漏洞&#xff0c;允许攻击者导致服务器端应用程序向非预期位置发出请求。 在典型的 SSRF 攻击中&#xff0c;攻击者可能会导致服务器连接到组织基础设施内的仅供内部使用的服务。在其他情况下&#xff0c;他们可…

python数字图像处理基础(七)——直方图均衡化、傅里叶变换

目录 直方图均衡化均衡化原理均衡化效果标准直方图均衡化自适应直方图均衡化 傅里叶变换原理低通滤波高通滤波 直方图均衡化 均衡化原理 图像均衡化是一种基本的图像处理技术&#xff0c;通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域…

Docker安装开源Blog(Typecho)

前言 首先这个镜像是centos7.9进行安装PHP环境&#xff0c;然后挂载目录去运行的&#xff0c;镜像大概300MB左右&#xff0c;没学过PHP&#xff0c;没办法给Dockerfile文件 参考文章&#xff1a;Docker安装Typecho | D-y Blog感知不强&#xff0c;图一乐https://www.wlul.top…

IntelliJ IDEA 拉取gitlab项目

一、准备好Gitlab服务器及项目 http://192.168.31.104/root/com.saas.swaggerdemogit 二、打开 IntelliJ IDEA安装插件 打开GitLab上的项目&#xff0c;输入项目地址 http://192.168.31.104/root/com.saas.swaggerdemogit 弹出输入登录用户名密码&#xff0c;完成。 操作Comm…