博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

find,正则表达式,linux三剑客之grep

Posted on 2021-12-20 21:34  ~sang  阅读(26)  评论(0编辑  收藏  举报

笔记

1、每个月的3号、5号和15号,而且这天是星期六时执行

  00 00 3,5,15 * 6

2、每天的3点到15点,每隔3分钟执行一次

  */3 3-15 * * *

3、每周六早上2点半执行

  30 02 * * 6

4、每隔两个月的一号下午10点执行

  00 22 01 */2 *

5、root密码忘记了的解决办法

  1、重启

  2、在启动选择系统内核界面,按e键进入单用户模式

  3、找到linux16开头行,删除ro,并且在ro处添加rw init=/sysroot/bin/sh

  4、按ctrl+x进行系统重新引导

  5、执行chroot /sysroot

  6、执行passwd root

  7、执行touch /.autorelabel

  8、执行ctrl+D重启系统

6、yum私有仓库的搭建步骤

  1、安装工具

    yum install createrepo yum-utils nginx -y

  2、创建目录

    mkdir /opt/test

  3、创建包目录

    mkdir /opt/test/Packages

  4、下载安装包,下载到Packages目录中

    https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zsh-5.0.2-34.el7_8.2.x86_64.rpm

  5、初始化仓库

    createrepo /opt/test

  6、修改nginx的配置文件

    [root@localhost /mnt]# vim /etc/nginx/nginx.conf

    # include /etc/nginx/conf.d/*.conf;

    root /opt/test;

    autoindex on;

  7、启动nginx

    systemctl start nginx

  8、添加yum源

    yum-config-manager --add-repo=http://192.168.15.101

  9、测试

    yum install zsh -y

find

  根据文件的名称或者属性查找文件

语法格式:

  find [查找范围] [参数]

参数:

  -name:按照文件的名字查找文件

  -iname:按照文件的名字查找文件(忽略大小写)

  -size:按照文件的大小查询文件

    +:大于  -:小于  没符号:等于

  -mtime:按照修改时间去查询

    +(可以省略):n天以前

    -:n天以内

  -atime

  -ctime

  -user:按照用户的属主查询

  -group:按照用户的属组查询

  -type:按照文件的类型查询

    d:文件夹

    l:链接文件

    s:套接字文件

    p:管道文件

    c:字符文件

    b:磁盘文件

    f:普通文件

  -perm:按照文件的权限查询

  -inum:根据index node号码查询

  -a:并且(可以省略,默认时并且)

  -o:或者

  -maxdepth:查询的目录深度(必须放置于第一个参数位)

  -exec:将find处理好的结果交给其它命令继续处理

知识储备:

  dd:生成文件([root@localhost ~]# dd if=/dev/zero of=100.txt bs=10M count=10)

    if:从什么地方读

    of:写入到什么文件

    bs:每次写入多少内容

    count:写入多少次

案例:

  案例1:查询/etc目录下hosts文件

    [root@localhost ~]# find /etc/ -name 'hosts'

  案例2:查询/etc目录下名称中包含hosts的文件

  ·  [root@localhost ~]# find /etc/ -name '*hosts*'

  案例3:要求把/etc目录下,所有的普通文件打包压缩到/tmp目录

    [root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

知识储备

  |:前面一个命令的结果交给后面一个命令处理

  xargs:把处理的文本变成以空格分割的一行

  '':提前执行命令,然后将结果交给其它命令来处理

grep

  linux三剑客之一,文本过滤器(根据文本内容过滤文件)

语法格式:

  grep [参数] [匹配规则] [操作对象]

参数:

  -n:过滤文本时,将过滤出来的内容在文件内的行号显示出来

  -A:匹配成功之后,将匹配行的后n行显示出来

  -B:匹配成功之后,将匹配行的前n行显示出来

  -C:匹配成功之后,将匹配行的前后各n行显示出来

  -c:只显示匹配成功的行数

  -o:只显示匹配成功的内容

  -v:方向过滤

  -q:静默输出

  -i:忽略大小写

  -l:匹配成功之后,将文本的名称打印出来

  -R | -r:递归匹配

  -E:使用拓展正则,等价于egrep

知识储备

  $?:上一行命令执行的结果,0代表执行成功,其它数字代表执行失败

  wc:匹配行数

    -l:打印匹配行数

    -c:打印匹配的字节数

在/etc目录下,有多少个文件包含root

  [root@localhost ~]# grep -rl 'root' /etc/ | wc -l

正则表达式

1、正则表达式的分类(grep)

  1、普通正则表达式

  2、拓展正则表达式

2、普通正则表达式

  ^:以某字符开头

  $:以某字符结尾

  .:匹配除换行符之外的任意单字符

  *:匹配前导字符的任意个数

  []:某组字符串的任意一个字符

  [^]:取反

  [a-z]:匹配小写字母

  [A-Z]:匹配大写字母

  [a-zA-Z]:匹配大小写字母

  [0-9]:匹配数字

  \:取消转义

  ():分组

  \n:代表第n个分组

3、拓展正则

  {}:匹配的次数

  {n}:匹配n次

  {n,}:至少匹配n次

  {n,m}:匹配n到m次

  {,m}:最多匹配m次

  +:匹配至少有一个前导字符

  ?:匹配一个或零个前导字符

  |:或

案例:

  案例1:在/etc/passwd文件中,匹配已ftp开头的行

    [root@localhost ~]# grep '^ftp' /etc/passwd

  案例2:在/etc/passwd文件中,匹配已bash结尾的行

    [root@localhost ~]# grep 'bash$' /etc/passwd

  案例3:匹配本机中有哪些ip

    [root@localhost ~]# ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'

  案例4:要求将/etc/fstab中的去掉包含#开头的行,且要求#后至少有一个空格

    [root@localhost ~]# grep -vE '^#\ +' /etc/fstab

  案例5:找出文件中至少有一个空格的行

    [root@localhost ~]# grep -E '\ +' xxx

  案例6:将nginx.conf 文件中已# 开头的行和空行,全部删除

    [root@localhost ~]# grep -vE '^\ *#|^$' /etc/nginx/nginx.conf