云网牛站
所在位置:首页 > Linux培训 > Linux入门记录五:命令行文本/文件处理工具,包管理工具RPM及YUM

Linux入门记录五:命令行文本/文件处理工具,包管理工具RPM及YUM

2017-12-03 15:20:21作者:mingc稿源:博客园

本文是Linux入门记录五,本记录为你讲述Linux命令行文本/文件处理工具、Linux包管理工具RPM、Linux包管理工具YUM内容。

 

Linux入门记录系列

Linux入门记录四:网络基础和基本配置,多命令协作之管道及重定向

Linux入门记录三:获取帮助,Linux用户基础,权限机制,扩展权限

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

Linux入门记录一:Bash基本,文件结构,文件操作,常用命令,vim编辑器

 

Linux 入门记录:Linux 命令行文本/文件处理工具

一、文件浏览

cat      查看文件内容

more     以翻页形式查看文件内容(只能向下翻页)

less     以翻页形式查看文件内容(可以上下翻页)

head     查看文件的头几行(默认10行)

tail     查看文件的尾几行(默认10行) 

二、正则匹配打印行

命令 grep 用来全局匹配正则表达式并打印所在行:

grep 'mingc' /etc/passwd        在该文件中匹配mingc的用户信息并打印所在行

find / -user mingc | grep ".*\.png$"  查找mingc的所有png文件(管道操作)

常用参数:

-i       搜索时忽略大小写

-n       显示结果所在行数

-v       输出不匹配该正则的行(类似于一个取反操作)

-An      在输出的时候包含结果所在行之后的指定n行

-Bn      在输出的时候包含结果所在行之前的指定n行 

三、文本切割打印字段

命令 cut 常用来切割文本行、打印某些字段:

cut -d:fl /etc/passwd    打印passwd文件中冒号分割的第1个字段(用户名)(列出来多行的用户名)

grep mingc /etc/passwd | cut -d: -f3   打印mingc的用户信息汇总冒号分割的第3个字段(uid)

常用参数:

-d       指定分割字符(默认Tab)

-f       显示特定序号的字段(从1开始)

-c       显示特定范围字符(从第几个到第几个)

示例:

grep mingc /etc/passwd | cut -d: -f3     打印mingc的用户信息中冒号分割的第3个字段(uid)

grep mingc /etc/passwd | cut -d: -f6,7   打印mingc的用户主目录和登录Shell

grep mingc /etc/passwd | cut -c1-5       打印mingc的用户信息中第1~5个字符

grep mingc /etc/passwd | cut -c1-        打印mingc的用户信息中第1个字符之后的所有字符

grep mingc /etc/passwd | cut -c-5        打印mingc的用户信息中第5个字符之前的所有字符 

四、文本统计

命令 wc 用于统计文件的行数、单词数、字符数等:

wc test.md

不带参数时默认输出一行,字段格式为:

行数 单词数 字符数 文件名

常用参数:

-l       只统计行数

-w       只统计单词数

-c       只统计字节数

-m       只统计字符数 

五、文本排序

命令 sort 用于对文件内容进行排序(也可以对STDIN进行排序):

sort filename

常用参数:

-r        逆向(倒序)排序

-n        基于数字排序

-f        忽略大小写

-u        去重复(剔除重复行)

-t<分割符> 指定分隔符(一般配合-k参数使用,单纯分割毫无意义)

-k n      当指定分割符时,按照第n个字段进行排序(序号n从1开始)

 -r、-n、-t、-k 参数可以配合使用:

Linux入门记录五:命令行文本/文件处理工具,包管理工具RPM及YUM

上图中,把 test.md 文件内容的每行按照冒号分割、基于数字对第3个字段进行逆向排序。 

六、剔除重复行

命令 sort -u 可以剔除文件内容重复行,但副作用是进行了排序。

命令 uniq 可以剔除文件内容(相邻的)重复行:

Linux入门记录五:命令行文本/文件处理工具,包管理工具RPM及YUM

七、文本比较

命令 diff 用来比较两个文件的区别:

diff test1.md test2.md

常用参数:

-i       忽略大小写

-b       忽略空格字符

-u       统一显示比较信息(一般用来生成patch文件)

示例:

diff -u old.md new.md > update.patch   把文件的更新信息生成到补丁文件

八、拼写检查

命令 aspell 用来显示检查英文拼写:

aspell check filename

aspell list < filename

(CentOS 64位系统里似乎没有这个命令,也不常用,不详述。)

九、字符转换

命令 tr 用于从标准输入对字符进行转换处理。如果处理来自文件的输入,需要重定向。

删除关键字:

tr -d 'keyword' < filename

转换大小写:

tr 'a-z' 'A-Z' < filename

十、流式编辑——搜索替换

sed 命令是一种可以配合正则表达式使用的流式编辑工具。处理文件流时,把当前处理的行存储在临时缓冲区,称“模式空间”(pattern space),然后处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有发生改变,除非使用重定向存储输出。sed 命令主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法:

sed [options] 'command' file(s)

sed [options] -f scriptfile file(s)

常用参数 options:

-e<script>   指定一个script来处理文本

-f<script>   指定一个script来处理文本

-n           仅显示处理后的结果

常用命令 command:

d    删除行

D    删除第一行

s    替换指定字符

h    拷贝内容到缓冲区

H    追加内容到缓冲区

g    获取缓冲区的内容,替换当前文本

G    获取缓冲区的内容,追加到当前文本后面

p    打印行

P    打印第一行

q    退出sed

示例:

sed 's/linux/unix/g' filename      s表示搜索替换,linux替换为unix,g表示全局替换,filename目标文件

sed 'l,50s/linux/unix/g' filename  1到50行进行全局替换

sed -e 's/linux/unix/g' -e 's/ming/mingc/g' filename  -e参数替换多个

sed -f script filename             指定一个script来处理文件

 

Linux 入门记录:Linux 包管理工具 RPM

一、源代码管理

绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar.gz 的归档压缩文件。程序源代码需要编译为二进制可执行文件后才能够运行使用。源代码的基本编译流程为:

1./configure:解压缩后运行该命令,它主要检查编译环境、相关库文件以及配置参数并生成 makefile

2.make:对源代码进行编译,生成可执行文件

3.make install:将生成的可执行文件安装到计算机中

源代码形式的软件使用起来较为麻烦,但是兼容性和可控性较好。并且开源软件一般会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)。

二、RPM(RPM Package Manager,RPM包管理器)

使用源代码形式安装软件的优点是适用于所有系统、可定制,而缺点则是操作复杂、编译时间较长、极容易出现错误。为了方便使用,Erik Troan 和 Marc Ewing 开发了 RPM(RPM Package Manager,RPM 包管理器),RPM 最早是应用在 RedHat(红帽)中的。

1.设计目标

RPM 通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。RPM 的设计目标如下:

使用简单

使用单一软件包格式文件发布(.rpm 文件)

可升级

追踪软件依赖关系

基本信息查询

软件验证功能

支持多平台

2.命名规范

packagename-1.2.0-30.fc27.x86_64.rpm

(包名-版本号-操作系统-硬件平台)

其中:

操作系统:fc27 表示 Fedora 27 操作系统。

硬件平台:x86_64 表示 64 位平台,i386 表示 32 位平台,noarch 表示不需要特定的硬件平台(跨平台)。

3.基本命令

安装包:

安装包:rpm -i packagename.rpm

卸载包:

rpm -e packagename

升级包:

rpm -U packagename-new.rpm

通过 http、ftp 协议安装:

rpm - ivh 这里输入有效的地址

常用参数:

-v    显示详细信息

-h    显示进度条

-i    安装包

-e    卸载包

-U    更新(升级)包

-q    查询

-a    查询所有已安装包

-i    显示包信息

-h    取hash(哈希)

-f    查询文件属于哪个包

-p    未安装包的信息

-l    列出包里的文件

三、RPM查询

rpm -qa                     列出已安装的所有rpm包

rpm -qa | grep '.*gnome.*'  列出所有名称含有gnome的包

rpm -qf filename            查询目标文件属于哪个包

rpm -qi package             获取一个已安装包的相关信息

rpm -qip package.rpm        获取一个未安装包的相关信息

rpm -ql package             获取一个已安装包内的文件列表

rpm -qlp package.rpm        列出一个未安装包内的文件列表 

四、RPM验证

软件包在传播的过程中可能会被恶意地修改,所以为了安全起见,现代系统都加入了对软件包的验证功能。

验证一般使用非对称加密算法,所以需要一个公钥。导入公钥的方法是:

rpm --import /path/to/key_file

验证未安装的软件包:

rpm -K package.rpm

验证已安装的软件包:

rpm -V package

 

Linux 入门记录:Linux 包管理工具 YUM

一、YUM(Yellowdog Updater, Modified)

1.YUM 简介

RPM 软件包形式管理软件虽然方便,但是需要手动解决软件包的依赖问题。很多时候安装一个软件首先需要安装 1 个或多个(有时多达上百个)其他软件,手动解决依赖问题很复杂。使用 YUM可以解决这个问题。Linux 底层也是通过 YUM 来进行软件包管理的(包括图形界面)。

2.设计目标

YUM(Yellowdog Updater, Modified)是一个基于 RPM 包管理的字符前端软件包管理器,设计目的主要是用来自动解决 RPM 的依赖问题。其特点如下:

1.自动解决依赖关系

2.可以对 RPM 进行分组,并基于组进行安装操作

3.引入仓库概念,支持多个仓库

4.配置简单(/etc/yum.conf 和 /etc/yum.repos.d/*.repo)

二、YUM仓库(Repository)

1.仓库简介

YUM 引入了仓库(Repository)的概念,用来存放所有现有的 RPM包。当使用 YUM 安装一个 rpm 包的时候,如果存在依赖关系,YUM 会自动地在仓库中查找依赖并进行安装。仓库可以是本地的,也可以通过 http、ftp 或 nfs 形式使用集中、统一的网络仓库。YUM 通过仓库来很好地管理 RPM 包。

2.配置文件

YUM 的配置文件有 2 种:

(1)YUM 的主配置文件 /etc/yum.conf,为所有仓库提供公共配置。配置参数格式如下:

[main]

cachedir=/var/cache/yum/$basearch/$releasever   包的缓存目录

keepcache=0      安装后是否保留缓存

debuglevel=2     调试级别,默认为2(0~10)

logfile=/var/log/yum.log   日志文件

exactarch=1      是否需要平台完全匹配

obsoletes=1      是否需要检查已过期仓库

gpgcheck=1       是否检查包的完整性和合法性

plugins=1        是否允许支持YUM插件功能

installonly_limit=5        允许保留内核包的数量

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release  指定一个软件包,YUM会根据这个包判断你的发行版本,CentOS里默认centos-release

(2)各个仓库的配置文件 /etc/yum.repos.d/ *.repo。配置参数格式如下:

[base]           仓库名,必须唯一

name=CentOS-$releasever - Base   描述信息

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra   镜像列表,根据该地址动态获取baseurl

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/   真正的仓库地址,可以多个

enabled=1        是否启用该仓库

gpgcheck=1       是否进行包的合法性检测

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 软件包的公钥所在的文件路径

enablegroups=1   是否基于组来批量管理程序包

failovermethod={roundrobin|priority} 有多个url可供选择时,YUM的选择次序,默认roundrobin(随机选择)

cost=1000        仓库优先级,默认1000

备注部分:

base库:通常为系统发行版所提供的程序包(光盘)

updates库:存放更新包

extra库:存放额外包

epel库:epel库文件 

三、YUM基本命令

YUM 管理软件包的常用命令有:

yum install package-name  安装指定软件包

yum remove package-name   卸载指定软件包

yum update package-name   升级指定软件包 

四、YUM查询

yum search keyword          关键字搜索相关包

yum list [all|installed|recent|updates]   列出[全部|已安装的|最近的|更新]所有包

yum info package-name       查询包信息

yum whatprovides filename   查询哪个包提供了目标文件 

五、创建YUM仓库

可以通过以下方式手动创建 YUM 仓库:

1.将所有 rpm 文件拷贝到一个文件夹中

2.通过 rpm 命令手动安装 createrepo 软件

3.运行 createrepo -v /rpm-directory 

4.如果有分组信息,则再运行命令的时候使用 -g 参数指定分组文件

createrepo -g /tmp/*comps.xml/rpm-directory

(CentOS/RHEL 的分组信息保存在光盘目录下 repodata/,文件名以 comps.xml 结尾)

创建好之后,本机可以通过 file 方式直接使用,或者可以通过 http、ftp 或 nfs 协议共享出去。

六、YUM缓存

YUM 为了提高速度会有很多缓存,但有时候缓存会造成一些故障,可以通过以下命令来清理缓存:

yum clear all

每次运行 YUM 安装或查询一类的命令时会生成缓存。

 

相关主题

软件包管理基础:apt,yum,dnf,pkg

精选文章
热门文章