就业班 2401--3.1 Linux Day9--文件查找和压缩
一、文件查找与打包压缩
grep: 文件内容过滤
[root@qfedu.com ~]# grep 'root' /etc/passwd #从/etc/passwd文件中过滤root字段 grep '^root' 'root$' root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
查找命令
[root@qfedu.com ~]# which ls alias ls='ls --color=auto'/usr/bin/ls [root@qfedu.com ~]# which cd /usr/bin/cd [root@qfedu.com ~]# which rm alias rm='rm -i'/usr/bin/rm
查询命令和配置文件的位置
[root@qfedu.com ~]# whereis rpm rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz [root@qfedu.com ~]# whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
二、find详解: 文件查找 重点:!!!!!!!!!!!!!!!!
=========================================================================
语法: # find 路径 条件 跟条件相关的操作符 [-exec 动作] 路径: 1.默认不写路径时查找的是当前路径. 2.加路径。 条件: 1.指定的名称 -name 2.文件类型 -type 3.权限 4.时间
按文件名
从根开始找文件 [root@qfedu.com ~]# find / -name “file2” #从根开始找文件 最好加上双引号 /root/file2 /var/tmp/file2 [root@qfedu.com ~]# find /etc -name "ifcfg-ens33" #以名字的方式查找 [root@qfedu.com ~]# find /etc -iname "Ifcfg-ens33" #-i忽略大小写
**熟用通配符
[root@qfedu.com ~]# find /etc -iname "*.txt" 参数解释: *:表示所有字符
按文件大小 -size
我爱你 10个byte
hello
world
11个byte,有换行
[root@qfedu.com ~]# find /etc -size +5M #大于5M [root@qfedu.com ~]# find /etc -size 5M #等于5M [root@qfedu.com ~]# find /etc -size -5M #小于5M [root@qfedu.com ~]# find / -size +3M -a -size -5M #查找/下面大于3M而且小于5M的文件 -a:and [root@qfedu.com ~]# find / -size -1M -o -size +80M #查找/下面小于1M或者大于80M的文件 -o:or [root@qfedu.com ~]# find / -size -3M -a -name "*.txt" #查找/ 下面小于3M而且名字是.txt的文件
按时间查找
按时间找(atime,mtime,ctime) -atime = access访问时间 -mtime = modify改变时间 内容修改时间会改变 -ctime = change修改时间 属性修改时间会改变 -amin #分钟 -mmin -cmin[root@qfedu.com ~]# find /opt -mtime +5 #修改时间5天之前 [root@qfedu.com ~]# find /opt -atime +1 #访问时间1天之前 [root@qfedu.com ~]# find . -mtime -2 #修改时间2天之内 [root@qfedu.com ~]# find . -amin +1 #访问时间在1分钟之前 [root@qfedu.com ~]# find /opt -amin -4 #访问时间在4分钟之内 [root@qfedu.com ~]# find /opt -mmin -2 #修改时间在2分钟之内
按文件类型
[root@qfedu.com ~]# find /dev -type f #f普通文件 [root@qfedu.com ~]# find / -type f -size -1M -o -name "*.txt" [root@qfedu.com ~]# find /dev -type d #d目录 [root@qfedu.com ~]# find /etc/ -type d -name "*.conf.d" [root@qfedu.com ~]# find /etc -type l #l链接 [root@qfedu.com ~]# find /dev -type b #b块设备 [root@qfedu.com ~]# find /dev/ -type b -name "sd*"
按文件权限
[root@qfedu.com ~]# find . -perm 644 #.是当前目录 精确查找644 [root@qfedu.com ~]# find /usr/bin -perm -4000 #包含set uid [root@qfedu.com ~]# find /usr/bin -perm -2000 #包含set gid [root@qfedu.com ~]# find /usr/bin -perm -1000 #包含sticky
找到后处理的动作 ACTIONS
[root@qfedu.com ~]# find /etc -name "ifcfg*" -exec cp -rf {} /tmp \; #exec命令对之前查找出来的文件做进一步操作----- 查找带ifcfg开头的文件复制到tmp下 [root@qfedu.com ~]# touch /home/test{1..20}.txt [root@qfedu.com ~]# find /home/ -name test* -exec rm -rf {} \; #{}为前面查找到的内容,\; 格式 大白话:-exec 将前面的命令一个一个给后面的命令去执行,xargs必须加个管道才可以,它需要分号, 但是分号会有其他意思,必须加个 \将分号变为普通的,变为前面-exec的分号。
find使用xargs
[root@qfedu.com ~]# touch /home/test{1..20}.txt [root@qfedu.com ~]# # find /home/ -name "test*" | xargs -i cp {} /tmp/ #找到之后删除处理xargs 参数传递 大白话:将管道前面的命令全部交给xargs这个命令,然后xargs将前面的一起处理逐个给cp 后面的大括号{}
-exec和xargs的区别
-exec:参数是一个一个传递的,传递一个参数执行一次命令。 xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。 =============== 1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好; 2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。 3、xargs不能操作文件名有空格的文件; 综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用 exec了。
案例1: 分别找出test5 和除了test5的文件
[root@qfedu.com ~]# find /home/ -name *test5* [root@qfedu.com ~]# find /home/ ! -name "test5*" # !--取反 这个叹号加到查找的目录后面去
cp -r 为什么和后处理的动作 ACTIONS 区别:
e.g. 将etc下的所有*.conf 一并复制
cp -r :将目录中的文件和子目录一并复制,但是不能将子目录里面的想要找的文件去复制
后处理的动作 ACTIONS :可以将etc下的所有.conf 一并复制,当然也可以找出来子目录的.conf
三、打包压缩
window打包压缩工具:
结尾:.rar .zip 打包工具:winrar zip 7zip 好压
linux打包压缩工具:
结尾:.tar.gz .tar.bz2 .zip
工具:gzip和tar(打包) bzip2(只压缩)
打包
语法: #tar cvf xxxx.tar filename 被打包的文件 ... 表示归档 c :create 创建 v :verbose 详细信息 f :file 文件
解包
#tar xvf filename.tar [-C /root/Desktop] x: extract 解压缩 解包 -C: 指定解包路径
案例
[root@qfedu.com ~]# tar cvf dir1.tar /home/dir10/ #打包目录dir10,将包命名为dir1.tar [root@qfedu.com ~]# tar xf dir1.tar -C /usr/local/ #将dir1包解压到指定目录
压缩
gzip bzip2 语法: 压缩:#gzip 源文件 #格式 file.gz结尾#bzip2 源文件 #格式 file.bz2结尾
bzip2需要安装
[root@qfedu.com ~]# yum -y install bzip2 #打包bzip2需要安装
解压缩
语法: #gunzip 压缩文件 #bunzip2 压缩文件 #gzip -d 压缩文件 #bzip2 -d 压缩文件 -d:dicompress 解压缩
案例
[root@qfedu.com ~]# gzip file1 #压缩 [root@qfedu.com ~]# gzip -d file1.gz #解压缩 [root@qfedu.com ~]# gunzip file1.gz #也是解压缩包 [root@qfedu.com ~]# gzip -c file1 > /usr/local/file1.gz #压缩到指定位置(注意以.gz结尾) [root@qfedu.com ~]# gunzip -c /usr/local/file1.gz > /opt/file1 #解压到指定位置(解压出的名字可以自定义) -c, --stdout
打包压缩一起:
语法: #tar cvzf file.tar.gz 源文件 #tar cvjf file.tar.bz2 源文件 z:表示gz压缩 j:表示bz2压缩
解压解包一起:
语法:
#tar xvzf 压缩文件 [-C 解压路径]
#tar xvjf 压缩文件 [-C 解压路径]
案例
[root@qfedu.com ~]# tar czf dir1.tar.gz dir1 #打包并压缩 [root@qfedu.com ~]# tar xzf dir1.tar.gz -C /usr/local/ #解压到指定位置
打包到指定路径
[root@qfedu.com ~]# tar czf /tmp/`date +%F-%T`-etc.tar.gz /etc/ #将打包的文件放到/tmp目录下,并以当前时间开头命名
扩展--按时间创建目录或者文件
# mkdir `date +%F`-upload # touch file-`date +%F`.txt
作业
查找系统内所有.gz结尾的文件并备份到/tmp/backup目录下 查找10天以内被修改过的.txt结尾的文件
四、链接文件
软链接 或 符号链接 硬链接
硬链接
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。 这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。[root@qfedu.com ~]# echo 222 > /file2 [root@qfedu.com ~]# ll -i /file2 #-i:显示inode编号 34045994 -rw-r--r-- 1 root root 4 Dec 29 20:52 file2 [root@qfedu.com ~]# ln /file2 /file2-h1 [root@qfedu.com ~]# ll -i /file2 /file2-h1 #查看inode号 34045994 -rw-r--r-- 2 root root 4 7月 30 22:25 /file2 34045994 -rw-r--r-- 2 root root 4 7月 30 22:25 /file2-h1 [root@qfedu.com ~]# rm -rf /file2 #删除源文件 [root@qfedu.com ~]# ll -i /file2-h1 #查看链接文件 34045994 -rw-r--r--. 3 root root 4 Nov 9 15:01 /file2-h1 查看: [root@qfedu.com ~]# cat /file2-h1 222运行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。 反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。
软连接
除了硬链接以外,还有一种特殊情况 文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。 也称为快捷方式 这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
ln -s 命令可以创建软链接。
语法:ln -s 源文件 链接文件 [root@qfedu.com ~]# echo 111 > /file1 [root@qfedu.com ~]# ll -i /file1 545310 -rw-r--r-- 1 root root 4 7月 30 22:06 /file1 [root@qfedu.com ~]# ln -s /file1 /file11 #将文件file1软链接到file11 [root@qfedu.com ~]# ll /file11 lrwxrwxrwx 1 root root 6 Dec 20 17:58 /file11 -> /file1 [root@qfedu.com ~]# ll -i /file11 /file1 #查看inode号 545310 -rw-r--r-- 1 root root 4 7月 30 22:06 /file1 545343 lrwxrwxrwx 1 root root 6 7月 30 22:06 /file11 -> /file1 [root@qfedu.com ~]# cat /file1 111 [root@qfedu.com ~]# cat /file11 111 [root@qfedu.com ~]# rm -rf /file11 #取消软连接。 [root@qfedu.com ~]# ln -s /file1 /file11 [root@qfedu.com ~]# rm -rf /file1 #删除源文件 [root@qfedu.com ~]# ll /file11 lrwxrwxrwx 1 root root 6 Dec 20 17:58 /file11 -> /file1 #已失效 #给目录设置软链接必须是绝对路径 [root@qfedu.com ~]# ln -s /root/aaa/ /usr/bbb [root@qfedu.com ~]# ll /usr/bbb lrwxrwxrwx 1 root root 10 Dec 29 21:08 /usr/bbb -> /root/aaa/ [root@qfedu.com ~]# rm -rf /usr/bbb #取消链接,注意:删除目录链接时目录后面加“/”是删除目录,不加是删除链接
把一些重要文件做多个链接
注:硬链接 1. 不能跨文件系统 2. 不支持目录做硬链接
[root@qfedu.com ~]# ln /root/aaa/ /mnt/bbb ln: "/root/aaa/": 不允许将硬链接指向目录
面试:软链接和硬链接的区别:
=========================================================================
- 软链接可以跨文件系统,硬链接不可以;
- 软链接可以对目录进行连接,硬链接不可以;
- 删除源文件之后,软链接失效,硬链接无影响;
- 两种链接都可以通过命令 ln 来创建;
- ln 默认创建的是硬链接;
- 使用 -s 参数可以创建软链接。
=========================================================================
五、破解密码---扩展
# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
修复模式: 1,特权模式:不需要root密码,直接以root账户身份登陆。 破解密码时特权模式。
1.重起系统,进入grub菜单 2.选择要使用的内核 3.按e
4.找到linux16那一行,把光标移动到最后,添加 init=/bin/sh 5.ctrl+x #保存退出
6.进入系统后,以rw方式重新挂载/分区 #mount -o remount,rw / 7.永久关闭selinux #vim /etc/sysconfig/selinux 8.修改密码
9. # touch /.autorelabcl #重新识别新的root密码 10. # exec /sbin/init #重启机器,
测试登录
补充:两个时间输出的不同
相关文章:

就业班 2401--3.1 Linux Day9--文件查找和压缩
一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…...

「滚雪球学Java」:JDBC(章节汇总)
🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!…...
RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构
💡本篇内容:RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,RT-DETR专属 应部分读者要求,新增一篇RepVGG 论文理论部分 + 原…...
C#进阶高级语法之LINQ :Lambda 表达式
C# 中的 LINQ (Language Integrated Query) 提供了一种声明性的数据查询和操作方法,它允许开发人员对集合、数据库等数据源进行查询和操作,而不需要编写复杂的循环和手动编码。Lambda 表达式与 LINQ 紧密相关,它提供了一种简洁的方式来定义匿…...
react hook: useCallback
useCallback的主要使用场景在于优化性能,并确保当传递回调函数给子组件时,子组件不会因为父组件的重渲染而重新创建函数。 使用场景 1.当你需要将回调函数传递给子组件时,使用useCallback可以确保子组件在重新渲染时不会不必要地重新创建函数…...

java面试(jvm)
JVM内存模型 细分Eden: java类加载过程?双亲委派机制?一个对象从加载到JVM,再到被GC清除过程? JAVA类加载器:AppClassLoader - ExtClassLoader - BootStrapClassLoader。每种类加载器都有他自己的加载目录…...

自动化测试摸索:python+selenium+pytest(持续更新.....)
一、环境搭建 1、python 安装 下载链接:Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时,找到该安装程序:python-3.12.2-amd64.exe文件,双击启动安装向导。 为了防止C:盘文件因系统故障或者无…...

C++惯用法之RAII思想: 资源管理
C编程技巧专栏:http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…...
矢量图是什么,有哪些格式的文件
矢量图是一种图形设计中常用的图像类型,与我们日常见到的光栅图像(如JPEG、PNG等)有本质的区别。矢量图基于数学方程和几何元素(如点、线、曲线和形状)来表示图像,而不是像光栅图那样通过像素阵列来表示。这…...

Linux 设置快捷命令
以ll命令为例: 在 Linux 系统上,ll 命令通常不是一个独立的程序,而是 ls 命令的一个别名。 这个别名通常在用户的 shell 配置文件中定义,比如 .bashrc 或 .bash_aliases 文件中。 要在 Debian 上启用 ll 命令,你可以按…...

SpringCloudFeign远程调用
文章目录 1. Feign 是什么2. Feign 的使用2.1 引入依赖2.2 写接口2.3 服务调用方2.4 启动测试 3. Feign 日志配置4. Feign 使用优化5. 注意包扫描问题 1. Feign 是什么 Feign 是一个声明式、模板化的 HTTP 客户端,它是由 Netflix 开发并开源的。Feign 极大地简化了…...
Java中List、Set、Map三种集合之间的区别
Java中List、Set、Map三种集合之间的区别 1. List2. Set3. Map 在Java中,List、Set和Map是三种常见的集合类型,它们之间也有一些重要的区别: 1. List List是有序集合,可以存储重复元素。List的实现类常见有ArrayList、LinkedLis…...
SpringMVC之DispatcherServlet组件
目录 一、SpringMVC的核心处理流程二、DispatcherServlet1、init()方法2、doDispatch()方法3、AbstractAnnotationConfigDispatcherServletInitializer类 一、SpringMVC的核心处理流程 请求到达 DispatcherServlet DispatcherServlet 的请求处理: DispatcherServlet…...

抢商家、夺用户、比低价,抖音、快手、小红书“奇招尽出”
随着流量红利逐渐消退,国内电商平台之间互相内卷已成为了行业常态,而无论是在该领域深耕已久的淘宝、京东、拼多多等电商巨头,还是新跨界而来的抖音、快手、小红书等电商新秀都在不断地进行创新,以便为商家提供更好的服务…...
ChatGPT引领的AI面试攻略系列:AI全栈工程师篇
系列文章目录 AI全栈工程师(本文) 文章目录 系列文章目录一、前言二、面试题1. 基础理论与数据处理2. 机器学习3. 深度学习4. 大模型与迁移学习5. 计算机视觉6. 自然语言处理(NLP)7. 多模态学习8. AI生成内容(AIGC&am…...

上位机图像处理和嵌入式模块部署(qmacvisual配置)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们谈到了qmacvisual的编译、验证码、用户登录以及流程的编辑,这部分都是基础工作。事实上,除了这些内容之外…...

EXPLAIN PLAN FOR:在Oracle中生成执行计划
目录 案例 解析 Operation类型 在Oracle中,可以使用 EXPLAIN PLAN FOR 命令来生成执行计划,然后通过 SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY(PLAN_TABLE))来查看执行计划。需要注意的是,这两个命令需要在同一个窗口下运…...
蓝桥杯 9241.飞机降落
这道题本来作者以为是可以用一些小技巧进行暴力解法的,但是后来试了一下,不能过去全部数据。 下面是对半个的题解: #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…...

数据可视化原理-腾讯-散点图
在做数据分析类的产品功能设计时,经常用到可视化方式,挖掘数据价值,表达数据的内在规律与特征展示给客户。 可是作为一个产品经理,(1)如果不能够掌握各类可视化图形的含义,就不知道哪类数据该用…...

深度学习-Pytorch实现经典AlexNet网络:山高我为峰
深度学习-Pytorch实现经典AlexNet网络之山高我为峰 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...