第四单元 正则表达式与软件包管理

4.1 vi和vim编辑器

vi是一款好用的文本编辑器,vim是vi的进阶升级

vi三种模式:

一般指令模式

以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、贴上”来处理你的文件数据。

编辑模式

在一般指令模式下你按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现“ INSERT 或 REPLACE ”的字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下“Esc”这个按键即可退出编辑模式。

命令行命令模式

在一般模式当中,输入“ : / ? ”三个中的任何一个按钮,就可以将光标移动到最下面那一列。在这个模式当中, 可以提供你“搜寻数据”的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

案例:三种模式直接的转换,以及常用按键

一般模式快捷键

 0 或功能键[Home]           这是数字“ 0 ”:移动到这一列的最前面字符处
 $ 或功能键[End]           移动到这一列的最后面字符处
 G                       移动到这个文件的最后一列
 gg                       移动到这个文件的第一列,相当于1G
 /word                   向光标之下寻找一个名称为 word 的字串
 ?word                   向光标之上寻找一个字串名称为 word 的字串
 x,X                     在一列字当中,x为向后删除一个字符,X为向前删除一个字符
 dd                       删除光标所在的那一整列
 ndd                     n为数字。删除光标所在的向下n列
 yy                       复制光标所在的那一列
 nyy                     n为数字。复制光标所在的向下n列
 p,P                     p为将已复制的数据在光标下一列贴上,P则为贴在光标上一列
 u                       复原前一个动作
 .                       意思是重复前一个动作的意思

编辑模式快捷键

 i, I                    i为“从目前光标所在处插入”,I为“在目前所在列的第一个非空白字符处开始插入”
 o, O                   o为“在目前光标所在的下一列处插入新的一列”; O为在目前光标所在处的上一列插入新的一列!

命令行模式快捷键

 :n1,n2s/word1/word2/g    n1与n2为数字。在第n1与n2列之间寻找word1这个字串,并将该字串取代为word2 
 :1,$s/word1/word2/g     从第一列到最后一列寻找word1字串,并将该字串取代为word2
 :1,$s/word1/word2/gc     从第一列到最后一列寻找word1字串,并将该字串取代为word2,且在取代前显示提示字符给使用者确认(confirm)是否需要取代
 :wq                     储存后离开,若为 :wq! 则为强制储存后离开
 :x                     储存后离开,若为 :x! 则为强制储存后离开
 :set nu                 显示行号,设置之后,会在每一列的字首显示该列的行号
 :set nonu               与set nu相反,为取消行号!

4.2 Linux三剑客之grep

4.2.1文件通配符:

 *:表示任意个字符(不包括隐藏文件)
 ?:表示单个任意字符(中文也算一个字符)
 []: 表示匹配范围内的任意单个字符
  [:space:]:空白字符
  [:punct:]:标点符号
  [:lower:]:小写字母
  [:upper:]: 大写字母
  [:alpha:]:大小写字母
  [:digit:]: 数字
  [:alnum:]:数字和大小写字母
 [^]:表示匹配范围外的任意单个字符

练习:

1、创建a123、cd6、c78m、c1、my、m.z、k 67、8yu、789等文件,注意以上文件是顿号分隔,其他符号都是文件名组成部分

2、显示所有以a或m开头的文件;

3、显示所有文件名中包含了数字的文件;

4、显示所有以数字结尾且文件名中不包含空白的文件;

5、显示文件名中包含了非字母或数字的特殊符号的文件。

4.2.2正则表达式:

元字符:

.:匹配任意单个字符

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

匹配次数:

*:匹配其前面的字符任意次数

.*:任意长度的任意字符

\?:匹配其前面的字符1次或0次

{m,n}:匹配其前面的字符至少m次,至多n次

位置锚定:

^:锚定行首,此字符后面的任意内容必须出现在行首

$:锚定行尾,此字符后面的任意内容必须出现在行尾 ^$:空白行

\<或\b:其后面的任意字符必须作为单词首部出现

\>或\b:其前面的任意字符必须作为单词的尾部出现

分组:

\(\):向后引用

示例:

删除行首空格

sed 's/^[ \t]*//g'

删除行末空格

sed 's/[ \t]*$//g'

删除字符串前后空白

sed ’s/[[:space:]]//g‘

4.2.3grep命令

作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行.

模式:由正则表达式的元字符及文本字符所编写出的过滤条件

 语法: grep [选项]... PATTERN [FILE]...
 选项:
  -v:排除匹配的结果,显示不匹配的内容
  -n:显示匹配的行与行号
  -i:不区分大小写
  -c:只统计匹配的行数
  -E:使用egrep命令
  --color=auto:为grep过滤结果添加颜色
  -w:强制 PATTERN 仅完全匹配字词
  -o:只输出匹配的内容

扩展正则表达式:egrep支持除了以上正则表达式,还支持|、+

fgrep:不支持正则表达式

4.3 Linux软件包管理

4.3.1 rpm软件包安装

因为安装软件是 root 的工作,因此你得要是 root 的身份才能够操作 rpm 这指令的。

rpm安装、升级、删除选项

 选项:
  -i :安装软件包
  -v :提供更多的详细信息输出
    -h :显示安装进度
    -U :升级软件包
    -e :清除 (卸载) 软件包

rpm查询

 选项:
    -q :仅查询,后面接的软件名称是否有安装;
    -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
    -qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
    -ql :列出该软件所有的文件与目录所在完整文件名 (list);
    -qc :列出该软件的所有配置文件 (找出在 /etc/ 下面的文件名而已)
    -qd :列出该软件的所有说明文档 (找出与 man 有关的文件而已)
    -qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
    -qf :由后面接的文件名称,找出该文件属于哪一个已安装的软件;

4.3.2 yum软件包管理

利用 yum 进行查询、安装、升级与移除功能

查询功能:

 选项:
    search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
    list   :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
    info   :同上,不过有点类似 rpm -qai 的执行结果;

安装/升级功能:

 选项:
    install :后面接要安装的软件!
    update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可

移除功能:

 选项:
  remove : 后面接要移除的软件!

yum源配置

 # vim /etc/yum.repos.d/CentOS-Base.repo
 [base]
 name=CentOS-$releasever - Base
 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
 gpgcheck=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 配置讲解:
 [base]:代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件清单文件。
 name:只是说明一下这个软件库的意义而已,重要性不高!
 mirrorlist=:列出这个软件库可以使用的映射站台,如果不想使用,可以注解到这行;
 baseurl=:这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去捉映射站台, baseurl 则是指定固定的一个软件库网址!我们刚刚找到的网址放到这里来啦!
 enable=1:就是让这个软件库被启动。如果不想启动可以使用 enable=0 喔!
 gpgcheck=1:还记得 RPM 的数码签章吗?这就是指定是否需要查阅 RPM 文件内的数码签章!
 gpgkey=:就是数码签章的公钥档所在位置!使用默认值即可

yum清除软件库数据

 # yum clean all

yum显示已配置的源

 # yum repolist

epel源简单配置

4.4 管道命令

4.4.1 什么是管道

命令A|命令B --> 命令A的输出当做命令B的输入

第一个管道命令:

 ls -al /etc | less

4.4.2 管道命令之cut

cut 可以根据条件从命令结果中提取所对应内容。

例如,/etc/passwd文件,我只想要第三列内容,怎么办?

 语法:cut [选项]... [文件]...
 选项:
  -c             按字符选取内容
  -d             '指定分隔符'
  -f n1,n2:       分割以后显示第几段内容, 使用 , 分割
 示例:
 # cat test1.txt
 dsfsfdsf
 # cat test1.txt |cut -c 1
 # cat /etc/passwd|cut -d ':' -f 3

4.4.3 管道命令之sort

命令用于将文本文件内容加以排序

 语法:sort [选项]... [文件]...
 选项:
  -u: 去掉重复的
    -n: 按照数值大小排序
    -r: 按照倒序排列
    -t: 指定字段分隔符
    -k: 根据哪一列排序
 示例:
  1、# cat /etc/passwd|cut -d ':' -f3|sort -unr
    2、# sort -t ':' -k3 -nru /etc/passwd

4.4.4 管道命令之wc

统计文本内容,包括行数,单词数,字节数

 语法:wc [选项]... [文件]...
 选项:
    -c:字节数
    -w:单词数
    -l:行数
 

4.4.5 管道命令之uniq

uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。

 用法:uniq [选项]... [文件]
 选项;
  -c:统计每行内容出现的次数
 示例;
 [root@hadoop01 export]# cat 5.txt
 张三   98
 李四   100
 王五   90
 赵六   95
 麻七   70
 李四   100
 王五   90
 赵六   95
 麻七   70
 # 排序
 [root@hadoop01 export]# cat 5.txt | sort
 李四   100
 李四   100
 麻七   70
 麻七   70
 王五   90
 王五   90
 张三   98
 赵六   95
 赵六   95
 # 去重
 [root@hadoop01 export]# cat 5.txt | sort | uniq
 李四   100
 麻七   70
 王五   90
 张三   98
 赵六   95
 # 统计
 [root@hadoop01 export]# cat 5.txt | sort | uniq -c
 2 李四   100
 2 麻七   70
 2 王五   90
 1 张三   98
 2 赵六   95

4.4.6 管道命令之tr

 替换:
 # 将 小写i 替换成 大写 I
 echo "itheima" | tr 'i' 'I'
 # 把itheima的转换为大写
 echo "itheima" |tr '[a-z]' '[A-Z]'
 # 把 HELLO 转成 小写
 echo "HELLO" |tr '[A-Z]' '[a-z]'
 删除:
 echo 'abc1d4e5f' | tr -d '[0-9]'

作业

1、vi 有三种模式

2、列举vi常用的快捷键5个

3、找出你的 Linux 是否有安装 logrotate 这个软件?

4、列出上题当中,属于该软件所提供的所有目录与文件:

5、列出 logrotate 这个软件的相关说明数据:

6、分别仅找出 logrotate 的配置文件与说明文档

7、若要成功安装 logrotate ,他还需要什么文件的帮忙?

8、由上面的第7题,找出 /bin/sh 是那个软件提供的?

9、通过 EPEL 安装 NTFS 文件系统所需要的软件?

10、管道命令cut、sort、wc、uniq、tr命令及选项说明?

 

 

 

 

 

posted @ 2022-09-17 08:14  摩天居士-谢烟客  阅读(32)  评论(0编辑  收藏  举报