locate,find,sed,包管理,文件解压缩

本周学习内容知识点总结与实践

   本周总共分为四大点和一个补充点sed行编辑器、文件查找、文件压缩解压、软件包管理。
 现在开始逐个分解讲解其功能及实践操作的截图

一、文件查找:在文件系统上查找符合条件的文件

locate命令: 用来查找文件或目录,locate命令查找比find快,比如在/tmp下新建了一个xx文件夹,此时再使用locate去查找xx文件夹时发现无法找到文件夹,因为locate是事先把系统内所有档案名称及路径都索引到数据库了,在使用时尽量手动操作updatedb更新数据库。
选项

 -i:不区分大小写的搜索			示列locate -i  pasSSWd
 -n:只列出查询出结果的前三个 	示列:locate  -n3 passwd
 -r:使用基本正则表达式需要加r	示列:locate -r ‘\.conf$‘

find命令:实时查找工具,通过遍历指定路径完成文件查找
选项

-maxdepth:最大搜索目录深度,指定目录下的文件为1级
-depth:先处理目录内的文件,再处理指定目录
    示列:find /tmp/ -maxdepth 2 -name wujiancong
-mindepth:查看不小于多深的文件,不低于所限内容
    示列:find  /etc  -mindepth 4 -name  *.conf
-name:“文件名称” 支持glob函数 *,?,[],[^]
-iname:“文件名称” 不区分大小写查找
-inum:按inode号查找
-samefile  name 相同inode号的文件
-regex:以模式匹配整个文件路径,而非文件名称
     示列:find /etc  -regex  “.*\.sh$"

根据属主、属组查找

-user username :查找属主为指定用户UID的文件
    示列:find  -user wjc
-group  grpname:查找属组为指定组GID的文件
    示列:find -user joe -not -group joe
-uid  userID:查找属主为指定的UID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

根据文件类型查找

 -type
 f:普通文件    d:目录文件         l:符号链接文件
 p:管道文件    s:套接字文件       b:块设备文件
 c:字符设备文件	-empty:空文件或目录
    find /tmp -type d 查找tmp下的目录文件
    find /tmp -type f 查找tmp下的普通文件
    find / -type p    查找/下的管道文件

组合条件查找

 组合条件:
 与:-a	或:-o	非:-not !
 德.摩根定律:
 (非A)或(非B)=非(A且B)
 (非A)且(非B)=非(A或B)
 查找tmp下非用户root与非f开头的文件
     示列: find /tmp/ \(-not -user root -a -not -name ‘f*‘\)

根据文件大小查找

 -size [+|-]#UNIT
 常用单位:k, M, G,c(byte)
 #UNIT: (#-1, #]如:6k 表示(5k,6k]
 -#UNIT:[0,#-1]如:-6k 表示[0,5k]
 +#UNIT:(#,∞)如:+6k 表示(6k,∞)
       查找大于5k文件:find /tmp/ -size +5k
       查找小于5k文件:find /tmp/ -size -5k

以时间为单位查找

 -amin  查找n分钟以前被访问过的所有文件。
 -atime 查找n天以前被访问过的所有文件。
 -cmin  查找n分钟以前文件状态被修改过的所有文件。
 -ctime 查找n天以前文件状态被修改过的所有文件。
 -mmin  查找n分钟以前文件内容被修改过的所有文件。
 -mtime 查找n天以前文件内容被修改过的所有文件。

以权限查找 find /tmp -perm 755

查询到的标准输出再进行处理动作

-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行“ls -l”命令
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性
传递给后面的命令
由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs
可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数
许多命令不能接受过多参数,命令执行可能会失败,xargs可以解决
注意:文件名或者是其他意义的名词内含有空格符的情况
find和xargs的组合:find | xargs COMMAND
示例:
ls | xargs rm 删除当前目录下的大量文件
find /sbin/ -perm +700 | ls -l 这个命令是错误的
find /bin/ -perm /7000 | xargs ls -Sl 查找有特殊权限的文件,并排序
find /bin/ -perm -7000 | xargs ls -Sl 此命令和上面有何区别?
find -type f -name “*.txt” -print0 | xargs -0 rm 以字符nul分隔
find示例
备份配置文件,添加.orig这个扩展名
find -name “*.conf” -exec cp {} {}.orig \; ?提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \; ?在主目录中寻找可被其它用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \; ?查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \; ?查看/home的目录
find /home –type d -ls

二、归档压缩解压

压缩工具:zip、gzip、gunzip=gunzip -d、zcat、使用gzip压缩便使用zcat 查看压缩内容

 gzip 压缩文件
 示列:gzip  message   压缩完成之后不保留原文件 默认压缩.gz后缀
    -c:将压缩结果输出,可以使用重定向将其保存为压缩文件,从而保留源文件
 bzip2 :压缩完成之后不保留原文件 默认压缩.gz
     -k:压缩和解压时都保留源文件
 xz:压缩
 归档工具
     tar [options]   file.tar   file1
 创建归档
    tar -cpvf /tmp/geeee.tar /tmp/
 tar xvf :解压缩
    -c:创建归档
    -x:展开归档
    -t:不展开而直接查看被归档的文件
    -z:使用gzip压缩
    -Z:使用compress进行解压缩
    -j:使用bz2压缩
    -J:使用xz压缩
    -v:显示解压缩执行过程
    -f:指定要处理的文件名

三、sed 行编辑器

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

选项:

 -n 不输出模式空间内容到屏幕,即不自动打印  sed -n ‘3p’
 -e 多点编辑
 -f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本
 -r 支持使用扩展正则表达式
 -i.bak 备份文件并原处编辑
     sed -i.bak ‘/^# User/aAAA‘ /tmp/bash:先备份然后在操作# User开头的末尾加入AAA

地址命令
sed工具地址定界
(1) 不给地址:对全文进行处理
(2) 单地址:#指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行:sed -n ‘/^[^#]/p‘ /etc/fstab

(3) 地址范围:
   #,#    sed -n ‘3,5p’ 三行到第五行
   #,+#	  sed -n ‘3,+5p’ :表示三行往后再加5行
(4) ~:步进
    1~2 奇数行:seq  10 | sed -n ‘1~2p’:表示基数行1、3、5显示
    2~2 偶数行: seq 10|sed -n ‘2~2p‘:偶数行2、4、6显示
    /pat1/,/pat2/      示列: sed -n ‘/^U/p’ /etc/fstab:以u开头的行
 #,/pat1/ 		示列:sed -n ‘/^b/,/^f/p‘ /etc/passwd:以b开头到f开头的行
 ‘//,// 示列:sed -n ‘/24\ /May\ /2018:11:56:00/,/24\ /May\ /2018:11:56:39/p‘ access_log
    查看日志某时间段到某时间段的日志内容带/ 需加反\转义
 sed -n ‘s/[[:alpha:]]/\l&/gp‘  koko   :替换为小写
 sed -n ‘s/[[:alpha:]]/\u&/gp‘  koko:替换为大写

sed编辑命令

 d 删除模式空间匹配的行,并立即启用下一轮循环
 p 打印当前模式空间内容,追加到默认输出之后
 a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
    示列:sed ‘/^r/ahello‘ /tmp/passwd:以r开始的行后面追加hello
 i [\]text 在行前面插入文本
    示列:sed ‘/^k/i jiji‘ koko:在以某字母或数字开头的行前面插入内容至文本
 G 在行后面插入内容  sed  ‘afak‘G
 c [\]text 替换行为单行或多行文本
    示列:sed -i.bak ‘/^Listen 80/c Listen 8080‘ /etc/httpd/conf/httpd.conf :备份修改文件内容
 w /path/file 保存模式匹配的行至指定文件
    示列:seq 15 | sed ‘2,6w   /tmp/sed.log‘:将2-6行保存至指定文件
 r /path/file 读取指定文件的文本至模式空间中匹配到的行后
    示列:seq 15 | sed ‘2,6r /etc/issue‘:指定行追加文件内容
 = 为模式空间中的行打印行号
    示列:sed ‘/^#/=‘ /etc/fstab :以#开头的行打印行号
 ! 模式空间中匹配行取反处理
    示列:sed -n ‘/^#/!p‘ /etc/fstab :!取反打印不是以#号开头的行

sed替换工具

 s/// 查找替换,支持使用其它分隔符,[email protected]@@,s###
    示列cat /jiji |sed ‘/^root/!d‘|sed ‘s/root/test/2‘:将第二个root替换为test
    sed -nr ‘/CMDLINE/s#(.*)rd.lvm#\1 net.ifnames=0"#p‘ /etc/default/grub

插入内容

 sed  ‘s/kk/JJ/‘ koko :查找修改文件内容,修改需加sed -i
 sed -i ‘s/kk/JJ/‘ koko :s///查找替换文件内容,默认所有替换
 sed -r ’s/^(SELINUX=)disabled/\1enforcing/‘ /etc/selinux/config:反向替换引用
 cat setZone.txt  | sed -e ‘s/\(port=8\)\([0-9]+\)\(.*\)\(zoneid="\)/\1\2\3\4\2/g‘

替换标记:

 g 行内全局替换
 p 显示替换成功的行
 w /PATH/FILE 将替换成功的行保存至文件中

sed 高级用法

 ifconfig ens33 |sed -n ‘2p‘| sed ‘s/^.*inet //‘|sed ‘s/ net.*$//‘  取网卡
 ifconfig ens33|sed -rn ‘2s/^[^0-9]+([0-9.]+).*/\1/p‘
 P: 打印模式空间开端至\n内容,并追加到默认输出之前
 h: 把模式空间中的内容覆盖至保持空间中
 H:把模式空间中的内容追加至保持空间中
 g: 从保持空间取出数据覆盖至模式空间
 G:从保持空间取出内容追加至模式空间
 x: 把模式空间中的内容与保持空间中的内容进行互换
 n: 读取匹配到的行的下一行覆盖至模式空间
 N:读取匹配到的行的下一行追加至模式空间
 d: 删除模式空间中的行
 D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环
    示列
     sed -n ‘n;p‘ FILE
     sed ‘1!G;h;$!d‘ FILE
     sed‘N;D’FILE
     sed ‘$!N;$!D‘ FILE
     sed ‘$!d‘ FILE
     sed ‘G’ FILE
     sed ‘g’ FILE
     sed ‘/^$/d;G’ FILE
     sed ‘n;d‘ FILE
     sed -n ‘1!G;h;$p‘ FILE

四、RPM、YUM包管理

rpm命令管理程序包
安装、卸载、升级、查询、校验、数据库维护
rpm {-i|--install} [install-options] PACKAGE_FILE…
rpm安装:rpm -ivh  packet包路径
   -i:(表示安装)-v:(显示安装过程)-h:(使用#显示进度条)组合一起使用
rpm  -q   包名 :查询是否安装某包
rpm  -qa 列出当前安装所有的包
rpm  -qa 包名:查询包名
rpm  -e   包名:卸载安装
rpm  -ql  包名:查看安装后的文件列表
rpm  -i    包路径包名   --replacepkgs:覆盖安装
rpm  -qi  包名 :查看安装过的软件的详细信息描述
rpm  -qc 包名:查看安装后的配置文件
rpm  -q    --provides httpd    查看某个包属于谁的
rpm -V  包名   查看安装包是否改变
rpm	-K  包名  检测包是否被更改
rpm  -qf 包名:查看磁盘文件来自哪个包
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件

rpm升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
     upgrade:安装有旧版程序包,则“升级”
   如果不存在旧版程序包,则“安装”
   freshen:安装有旧版程序包,则“升级”
   如果不存在旧版程序包,则不执行升级操作
   rpm -Uvh 安装包和路径
   rpm -Fvh 安装包和路径
        --oldpackage:降级
        --force: 强制安装

yum命令:是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器 自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,yum可以查找、安装、删除。

示列
repolist:列出所有可用的yum包
clean all:清理缓存
list:	列出所有可用的包
info:	显示包的详细信息
grouplist:列出所有的包组
groupinfo "package_group_name": 显示包组信息
yum check-update:检查可升级的包
yum check-update:检查可升级的包
     update packe_name ....:指定升级的程序包
要升级到指定版本要带版本号:
  downgrade packe_name:降级
erase|remove pack_name ....:依赖的包也会被卸载
whatprovides|provides /path/to/somefile: 查询某文件是由谁提供的
groupinstll "group_name" 安装包组
groupremove ”group_name“:卸载组
yum history:查看yum的命令历史
  yum history info 6
  yum history undo 6
日志 :/var/log/yum.log
--nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件

yum 仓库配置
yum仓库的一些变量
yum的repo配置文件中可用的变量:
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
新建一个文件进行配置 /etc/yum.repo.d/xxx.repo [name] 仓库名称 name=hu 仓库名称 baseurl=配置仓库地址 enable=1:启用仓库 0:禁用仓库 gpgcheck=1:启用key 0警用key gpgkey=启用key后填入key

编译安装示列
源码编译安装tree-1.8
1、yum -y install gcc 相关依赖的包
2、官网下载源码
3、wget ftp://mama.indstate.edu /linux/tree/tree-1.8.0.tgz
  tar -xvf  tree-1.8.tgz
  cd tree-1.8.tgz
4、cat README、INSTALL
5、vim Makefile
  prefix = /apps/tree
6、  make -j cpu内核数 | && make install
7、man帮助vim /etc/man_db.conf
  MANDATORY_MANPATH    /apps/tree/man
8、PATH
  vim /etc/profile.d/env.sh
  PATH=/apps/bin:$PATH
  ./etc/profile.d/env.sh
  make  clean   删除重新编

原文地址:https://www.cnblogs.com/seeet/p/11373348.html

时间: 2024-08-30 17:29:33

locate,find,sed,包管理,文件解压缩的相关文章

程序包管理的前端工具yum、程序包管理器编译安装、sed命令

下面介绍的是程序包管理的前端工具yum.程序包管理器编译安装.sed命令. 一.Linux程序包管理:程序包管理的[前端工具] 1.yum软件包仓库简介 CentOS系的管理工具有yum和dnf.yum是一款发行版的Linux,其使用的默认程序包管理工具为rpm. URL是yum定位软件包仓库和仓库中程序文件的主要标识方式,表示如下: 例如:schema://[[email protected]]hostname/PATH/TO/DOCUMENT[paramers][methord] (例子中的

Linux 程序包管理及sed基础

1. 简述rpm与yum命令的常见选项,并举例 rpm简称包管理器,即RedHat系列发行版的程序包管理工具,由于它遵循GPL规则且功能强大方便,故而广受欢迎: yum是rhel系列系统上rpm包管理器的前端工具,它可以自动执行系统更新,包括依赖性分析和基于"知识库"元数据的过时处理,还可以执行新的包的安装,删除旧的包,为其用户提供更方便快捷的安装程序. rpm命令:rpm [OPTIONS] [PACKAGE_FILE]安装:-i, --install升级:-U, --update,

周期性任务计划,包管理,sed以及shell编程基础

周期性任务计划,包管理,sed以及shell编程基础 1.每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"[[email protected] /]# crontab -e0 /12 /usr/bin/tar -zcf /data/backup/etc-$(date '+%Y-%m-%d--%H-%M').tar.gz /ect/*2.rpm包管理功能总结以及实例应用演示rpm是一个功能十分强大的软件包管理系统,

NET Core 静态文件及JS包管理器(npm, Bower)的使用

NET Core 静态文件及JS包管理器(npm, Bower)的使用 文章目录 在 ASP.NET Core 中添加静态文件 使用npm管理JavaScript包 使用Bower管理JavaScript包 在 ASP.NET Core 中添加静态文件 虽然ASP.NET主要大都做着后端的事情,但前端的一些静态文件也是很重要的.在ASP.NET Core中要启用静态文件,需要Microsoft.AspNetCore.StaticFiles组件.可以通过Nuget添加,或者在project.jso

项目jar包管理,使用 .userlibraries 文件增加jar包的可移植性,明确jar包依赖,多项目共用jar包里

当一个普通的项目,在不适用maven 等jar包管理工具的时候,通常我都会直接把jar 包复制lib下,并且在build path 中直接添加额外jar包,或者使用user_libraries包所用的jar包 都放到一个文件夹里,然后让项目依赖该user_libraries 包.如果我又新建了一个项目,但是只有部分jar 包不一样或者版本不一样,通常我会再次新建一个文件夹把这些jar 放进去, 如果jar包出现问题我要一个个去翻看lib下的文件,看着很不方便,也不方便管理. 有没有像maven

nodejs第三天(核心模块与文件模块,核心模块和文件模块引入的区别,从模块外部访问模块内部,使用exports对象,npm包管理工具package.json文件,模块对象属性,将模块定义分类,npm发布流程,安装淘宝镜像,模块的管理)

核心模块与文件模块 ndejs是一个js运行环境,是一个平台.nodejs基于操作系统,封装了一些功能,http,tcp,udp,i/o模块,path,fs,stream等等 通过nodejs内置的模块,他们就称为核心模块.(他们都是nodejs内置的)http,fs,path等 文件模块:只要写一个js文件,每一个文件都是模块 .(自己写的js文件都被称为文件模块) 核心模块和文件模块引入的区别 核心模块有环境变量做调度 文件模块需要给出文件路径 注意:核心模块是nodejs内置的一些功能模块

包管理工具rpm和yum的用法

包管理工具rpm和yum的用法 一.rpm的用法 rpm原本是Rde Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐收到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装.升级,间接提升了Linux的适用性. rpm用法:rpm [OPTION...] 1.rpm安装软件包,后面需要跟上程序包文件的绝对路径或相对路径 常用选项: -v:显示指令的执行过程 -vv:详细显示指令执行过程,便于排错 -h:以#号显示程

Linux的rpm包管理

我们都知道,windows的程序无法直接在linux中运行,windows中大量的木马和病毒也无法被linux识别,所有的软件包都必须针对linux再做单独的开发. 软件包分类 源码包 (把源代码直接开放的包) 脚本安装包(源码包写一个安装界面,不需要手动安装) 二进制包(RPM包.系统默认包) 源码包的优点: 1.开源,如果有足够的能力,可以修改源代码 2.可以自由选择所需的功能 3.软件是编译安装,所以更加适合自己的系统,更加的稳定也效率更高 4.卸载方便 缺点: 1.安装步骤较多,尤其在安

Linux程序包管理学习

在Linux中一些软件的安装我们用的最多的应该就是RPM包了当然还有一种安装方式是使用yum 其实yum一种rpm的管理工具它能很方便的帮我们安装我们所指定的软件也如果我们安装的软件依赖于其他的组件它能自动帮我们一并安装好,是不是非常好用,而rpm包就只能一个一个的安装了,那么rpm包是什么呢,简单来说它就是一个打包工具RPM Package Manager,把我们的软件打包成一个文件,里面包含了我们软件的所有的信息:二进制文件,库文件,配置文件,帮助文件等等.有了rpm可以让我们的软件安装更为