locate,find,sed,包管理,文件解压缩
Posted seeet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/// 查找替换,支持使用其它分隔符,s@@@,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 删除重新编
以上是关于locate,find,sed,包管理,文件解压缩的主要内容,如果未能解决你的问题,请参考以下文章