文件查询、yum安装等零散知识点总结

归纳重要知识点:文件查询、Linux配置文件、文件的压缩与归档、yum安装包文件

  这篇博客介绍以前遗落的重要知识点进行归纳总结,分为四大块:文件查询命令、全局与个人配置文件、文件的压缩与归档、yum命令安装程序包的相关条件与操作。下面结合个人理解与学习内容一一进行总结。

    一.文件查询命令locate与find

  众所周知,linux系统的一切都是由文件所构成的,众多的文件构成了这样庞大的操作系统,即使有文件系统进行管理,所包含的文件也是大量的。在实际生产环境中,为了快速的查找相关的文件,需要一款查询命令为用户方便使用。这里介绍两个最常用的:locate与find。这两个命令各有优缺点,下面进行分别介绍。

  1.locate命令

  首先我们使用locate命令查找一个文件:

[root@localhost ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/etc/passwd
/root/etc/passwd-
/root/etc/etc/passwd
...
/usr/share/man/zh_CN/man1/gpasswd.1.gz
/usr/share/man/zh_CN/man8/chpasswd.8.gz
/usr/share/man/zh_TW/man8/chpasswd.8.gz
/usr/share/vim/vim74/ftplugin/passwd.vim
/usr/share/vim/vim74/syntax/passwd.vim

  可以看到,找到了一堆,只要是包含passwd的文件或者目录,就给与匹配,所以locate只是模糊匹配,并不能进行精确查找。

  如此看来,locate的实用性并不太高,但是执行命令时,我们发现执行速度飞快无比,几乎是立即给出了结果。这是为什么呢?原来locate并不是在整个系统中一个一个扫描文件,而是查询一个文件:/var/lib/mlocate/mlocate.db。这个文件实际上是locate命令的数据库,每隔一段时间,系统会自动更新这个数据库,更新的时间是比较长的。所以locate查询文件并不是实时进行的。一般是查询不到刚刚建立的文件的。

  当然我们可以手动进行更新locate数据库,使用updatedb命令即可。下面列出locate可以接的选项:

  -i:区分大小写(默认不区分)

  -n #:只列举前#个匹配文件

  2.find命令的使用

  同样查找passwd文件,使用find

[root@localhost ~]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd

  可以看到,find命令加上筛选范围/etc,按名称筛选方式,查到了基名为passwd的文件。所以find命令属于精确匹配文件。但与locate的查找速度相比,显得慢多了。

  find命令格式:find [options] [查找路径] [查找方式] [处理操作]。查找路径不必说,下面介绍查找方式的选择与处理操作的步骤。

  [查找方式]:

    -name:按文件名查找

    -user:按照属主查找

    -group:按照属组查找

    -nouser:查找无属主文件

    -nogroup:查找无属组文件

    -uid:根据UID查找文件

    -gid:根据GID查找文件

    -type TYPE:根据文件类型查找文件

    -size [+|-]#(单位K,M,G):根据文件大小进行查找。#表示找固定大小#的文件,+#表示内容大于#的文件,-#表示文件大小大等于0小等于#的文件

    -atime(单位:天)-amin(单位:分钟) [+|-]#:根据最后访问文件时间查询,+#代表#(天/分钟)之前,-#表示#(天/分钟)之内。

    -mtime(单位:天)-mmin(单位:分钟) [+|-]#:根据最后更改文件时间查询,+#代表#(天/分钟)之前,-#表示#(天/分钟)之内。

    -ctime(单位:天)-cmin(单位:分钟) [+|-]#:根据最后元数据更改时间查询,+#代表#(天/分钟)之前,-#表示#(天/分钟)之内。

    -perm [/|-]mode:根据文件权限查找,后面接八进制权限。比如:find / -perm 644表示查询所有根目录下权限为644的文件。/mode表示选取u,g,o三类用户满足其中一类用户权限就行,比如find / -perm /022表示寻找根目录下满足g权限有w或者o权限有w的文件就行,u=0所以不做条件筛选。-mode则刚好相反,find / -perm -022表示必须选取g有w,并且o权限同时有w的文件。举例说明:

[root@localhost testdir]# ll
total 4
-rw-rw-r--+ 1 root root 0 Aug 24 16:25 f1
-----w--w-. 1 root root 0 Aug 24 21:50 wangbadan
drwxr-xr-x. 2 root root 6 Aug 24 17:05 xx
-rw--w--w-. 1 root root 0 Aug 25 10:51 yy

[root@localhost testdir]# find /testdir/ -perm 022
/testdir/wangbadan

[root@localhost testdir]# find /testdir/ -perm /022
/testdir/f1
/testdir/wangbadan
/testdir/yy

[root@localhost testdir]# find /testdir/ -perm -022
/testdir/wangbadan
/testdir/yy

  以上各种查找条件都可以结合与或非-a,-o,!命令使用,来实现详细的查找文件功能。   

  [处理操作]:

  find命令最后可以加选项对查找到的文件执行操作,注意这里是将所有文件查找完毕后再一一执行。常用的有如下:

  -ls:相当于ls -l命令,显示所有文件长格式

  -print:结果显示至屏幕上,系统默认此选项

  -delete:删除所有找到文件

  -fls file:将所有文件的长格式信息保存至指定file中

  下面两个比较实用-ok与-exec:

  -ok command {} 、;对找到的每个文件执行command命令,{}代表文件,、;属于固定格式。但是-ok执行前都要询问是否执行,比较麻烦,如果不想要此步骤,将-ok换成-exec即可。下面举例说明:

[root@localhost testdir]# find /testdir/ -name f1 -ok mv {} {}.sh \;
< mv ... /testdir/f1 > ? y
[root@localhost testdir]# ls
f1.sh  wangbadan  xx  yy

 上面命令查找/testdir目录下的名为f1文件,找到后在原有名字后加上.sh变成f1.sh。

    二.文件的压缩与归档

  首先讲文件压缩,为什么需要压缩文件这个概念?简单的来说就是使用cpu的时间换存储设备的空间,达到更好的传输存储文件的作用。一般的压缩文件名字后缀都有特定格式,比如.z .gz .bz2 .xz等,下面来一一介绍。

  1.文件的压缩与解压缩命令

  compress file压缩文件生成的压缩文件后缀.z。 uncompress file.Z解压缩文件。这种命令压缩比太小,比较古老,如今已经被淘汰。

  gzip file压缩文件生成的后缀.gz。 gunzip file.gz解压缩文件。作为目前最主流的压缩格式

  bzip2 file压缩文件生成的后缀.bz2。 bunzip2 file.bz2解压缩文件。压缩比比gzip稍好

  xz file压缩文件生成的后缀.xz。 unxz file.xz解压缩文件,压缩比很有效,最牛逼

  

  这里我们注意,压缩文件之后,原文件就会删除,解压之后,原文件恢复,压缩文件会删除。如果想要保留原文件,可以使用-k选项:xz -k file。

  -#(数字)选项可以指定压缩比,默认为6,最大为9。

  -c选项可以将压缩结果输出至标准输出中:gzip -c file > /PATH/TO/SOMEFILE.gz ,也就是将压缩结果输出至一个.gz文件中,使用cat看到的是压缩后的内容,zcat可以看到原内容。

[root@localhost testdir]# ll
total 16
-rw-rw-r--+ 1 root root 48 Aug 25 11:50 f1.gz
-----w--w-. 1 root root 18 Aug 25 11:50 wangbadan
drwxr-xr-x. 2 root root  6 Aug 24 17:05 xx
-rw--w--w-. 1 root root 30 Aug 25 11:49 yy
[root@localhost testdir]# gzip -c wangbadan >> f1.gz 
[root@localhost testdir]# cat f1.gz                                                             ÿj¾WwangbadanKKK,njͪHLͫNͫ͏აÿj¾WwangbadanKKK,njͪHLͫNͫ͏აВ
[root@localhost testdir]# zcat f1.gz 
ffapigjpagnsgnqon
ffapigjpagnsgnqon

  

  2.文件的归档处理

  归档就是将多个压缩文件打包成固定格式单个文件。一般使用tar命令进行归档处理。

  tar命令使用格式:tar [options] file1 file2…下面介绍选项:

  -c:创建归档

  -x:展开归档

  -f 路径:后接创建的归档文件名,一般后缀使用.tar。

[root@localhost testdir]# tar -c f1.gz f2.gz -f ff.tar
[root@localhost testdir]# ls
f1.gz  f2.gz  ff.tar  wangbadan  xx  yy

 -t 显示归档文件内容列表

[root@localhost testdir]# tar -tf ff.tar 
f1.gz
f2.gz

 创建归档并压缩,可以一步进行,使用-z选项:tar -zcf /PATH/TO/SOME_FILE.tar.gz  file1 file2…

[root@localhost testdir]# ls
f1  f2  f3
[root@localhost testdir]# tar -zcf ff.tar.gz f1 f2 f3
[root@localhost testdir]# ls
f1  f2  f3  ff.tar.gz

 -z选项只针对于.gz格式的压缩,-j针对于.bz2格式,-J针对于.xz格式。同时打开压缩的归档文件就使用tar -zxf /PATH/TO/SOME_FILE.tar.gz

[root@localhost testdir]# rm -f f1 f2 f3
[root@localhost testdir]# ls
ff.tar.gz
[root@localhost testdir]# tar -zxf ff.tar.gz 
[root@localhost testdir]# ls
f1  f2  f3  ff.tar.gz

  可以看到,归档压缩文件解压后原文件不会消失。

    三.系统配置文件

  Linux系统中有很多配置文件,在系统启动后,根据这些配置文件信息自动执行一些操作步骤。

  1.首先按功能划分,分为profile类与bashrc类。

  profile类配置文件:用于定义环境变量,执行一些命令与脚本。

  bashrc类配置文件:用于定义本地变量,定义别名与函数。

  

  2. 按照全局配置文件与个人配置文件划分。所谓全局,是针对所有用户生效,个人是针对当前系统用户生效

  全局配置文件:/etc/profile    /etc/profile.d/*.sh    /etc/bashrc

  个人配置文件:~/.bash_profile    ~/.bashrc 

  交互式与非交互式登录配置文件的读取顺序

  交互式:/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → /etc/bashrc

  非交互式:~/.bashrc → /etc/bashrc → /etc/profile.d/*.sh

    四.yum仓库的创建与程序包的安装(包括源程序包安装)

  通过学习我们知道,rpm安装程序包时需要考虑各个程序包之间的互相依存关系,这对我们安装程序包是一个比较麻烦的存在。yum工具完美的解决了这个问题。比如我们安装一个程序包:

[root@localhost testdir]# yum install php 
Loaded plugins: fastestmirror, langpacks
base                                                                       | 3.6 kB  00:00:00     
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-36.el7_1 will be installed
--> Processing Dependency: php-common(x86-64) = 5.4.16-36.el7_1 for package: php-5.4.16-36.el7_1.x
...
..
..
Installed:
  php.x86_64 0:5.4.16-36.el7_1                                                                    

Dependency Installed:
  httpd.x86_64 0:2.4.6-40.el7.centos            httpd-tools.x86_64 0:2.4.6-40.el7.centos          
  mailcap.noarch 0:2.1.41-2.el7                 php-cli.x86_64 0:5.4.16-36.el7_1                  
  php-common.x86_64 0:5.4.16-36.el7_1          

Complete!

 安装php成功。卸载也是一样:

[root@localhost testdir]# yum remove php
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-36.el7_1 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
 Package           Arch                 Version                         Repository           Size
==================================================================================================
Removing:
 php               x86_64               5.4.16-36.el7_1                 @base               4.4 M

Transaction Summary
==================================================================================================
Remove  1 Package

Installed size: 4.4 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : php-5.4.16-36.el7_1.x86_64                                                     1/1 
  Verifying  : php-5.4.16-36.el7_1.x86_64                                                     1/1 

Removed:
  php.x86_64 0:5.4.16-36.el7_1                                                                    

Complete!

  

  yum的使用非常简单,但这一切是基于yum仓库来实现的。什么是yum仓库?说白了就是一个配置文件,配置文件指明了连接外部或者本地的路径,这些路径指向的地方有大量rpm格式的程序包,这些程序包就是这个配置文件的仓库。仓库可以有多个,一般放在/etc/yum.repos.d/*.repo中。

  仓库配置文件的书写格式,下面举例:

[root@localhost yum.repos.d]# cat aa.repo 
name=jiaoshi
baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
gpgcheck=0

  [base]表示仓库的ID,是仓库的唯一标识。name可以重复

  baseurl:仓库指向的外部或本地路径

  gpgcheck:表示是否对程序包进行检查,0表示不检查,1表示检查。如果检查,配置文件还要加上gpgkey=含有程序包key的路径。

  enabled:0表示不启用这个仓库,1表示启用这个仓库,如果不写默认为1

  

  如何创建一个yum仓库呢?使用createrepo [option] directory,指明路径下的配置文件,然后使用yum rpeolist查看是否在yum的仓库列表中即可。

  yum安装源文件包分三步:1.解压源程序包后执行./configure脚本,生成Makefile.in文件。2.使用make将源代码转换成二进制码。3.使用make install安装即可。

[root@localhost testdir]# ls
httpd-2.2.29.tar.bz2
[root@localhost testdir]# tar jxf httpd-2.2.29.tar.bz2 
[root@localhost testdir]# ls
httpd-2.2.29  httpd-2.2.29.tar.bz2
[root@localhost testdir]# cd httpd-2.2.29/
[root@localhost httpd-2.2.29]# ls
ABOUT_APACHE  CHANGES        httpd.dsp       libhttpd.dep  NOTICE            server
acinclude.m4  config.layout  httpd.mak       libhttpd.dsp  NWGNUmakefile     srclib
Apache.dsw    configure      httpd.spec      libhttpd.mak  os                support
build         configure.in   include         LICENSE       README            test
BuildAll.dsp  docs           INSTALL         Makefile.in   README.platforms  VERSIONING
BuildBin.dsp  emacs-style    InstallBin.dsp  Makefile.win  README-win32.txt
buildconf     httpd.dep      LAYOUT          modules       ROADMAP

[root@localhost httpd-2.2.29]# ./configure 
...
...
...
...
一大堆
configure脚本执行成功
[root@localhost httpd-2.2.29]# make
...
...
...
[root@localhost httpd-2.2.29]# make install
...
..
源程序包安装成功,可以启用http外部服务了!

   

原创文章,作者:mcgeewang,如若转载,请注明出处:http://www.178linux.com/39880

(0)
上一篇 2016-08-26 09:11
下一篇 2016-08-26 09:11

相关推荐

  • httpd的安装与使用

    httpd的安装与使用

    2017-12-07
  • 学习笔记–权限管理

    文件系统的权限管理 1、Linux系统下每个目录或文件的权限对象主要分为:属主(u)、属组(g)、其他用户(o),针对每类访问对象都定义了三种权限:读(r)、写(w)、执行(x),这三种权限针对目录和文件的作用各不相同,以下将做详细说明: 对于文件来说: 读(r)权限:可以使用文本查看类工具读取文件内容 写(w)权限:可以修改文件内容,但不能删除文件本身 执…

    Linux干货 2016-08-05
  • 文件处理工具及正则表达式练习

    本节练习均在centos7系统下实现,部分练习只截取部分截图,另外排版的事情我已经放弃了! 1.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行 注:^ 行首, . 匹配任意单个字符,* 匹配前面的字符任意次 突然发现前面解法错误,没有排除空格后加小括号的情况,下面是正确做法 2.统计last命令中…

    Linux干货 2017-07-29
  • python装饰器

    装饰器本质是一个装饰器函数,在不改变一个函数的函数体本身的情况下,实现函数体本身外其他的功能 1.实现一个装饰器 def  logger(fn):                         #装饰器函数必须只能传入一个参数,那就是被装饰函数     print(‘in’)     def wrapper(*args,**kwar…

    Linux干货 2017-10-23
  • Linux中分析文本工具

    一、收集文本统计数据wc wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据,且不改变原始数据。 例如; 可以对文件或STDIN中的数据运行 $wcstory.txt 39   237   1901 story.txt 行数 字数 …

    Linux干货 2016-08-08
  • 无插件Vim编程技巧

    相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章中。另外,这篇文章里的这些技巧全都是vim原生态的,不需要你安装什么插件。我的Vim的版本是7.2。 浏览代码…

    Linux干货 2016-08-15