Linux基础指令(五)

目录

  • 前言
  • 1. 打包和压缩
    • 1.1 是什么
    • 1.2 为什么
    • 1.3 怎么办?
  • 2. zip & unzip
  • 3. tar 指令
  • 结语:

前言

欢迎各位伙伴来到学习 Linux 指令的 第五天!!!

在上一篇文章 Linux基本指令(四) 当中,我们学习了 find 和 which 等指令去查找 文件 / 目录 的路径。其中 which 却可以查找系统命令,于是就涉及到了一系列问题,而这些问题被单独分开到了 如何正确看待Linux下的各种命令 这篇文章中去解答,然后呢,我们又在which的基础上,顺势的引入了解了 alias 和 whereis 这两条指令。随后我们学到了一个具有行文本过滤功能的指令 grep。再然后,为了引入并理解 xargs 这个参数指令,我们重新回顾了之前学习过的 echo 指令和管道文件,而 xargs 这个指令就是一个能够让 输出到管道文件的数据能够被系统命令当作命令行参数去使用的这么一个参数命令!

而今天学习,又是几个稍微比较难理解的指令,但它们都属于一个类型 —— 那就是 打包和压缩 !

OK,废话不多说,我们开启今天的学习,
今天我们要学习的是……


可能学了这么几天的 Linux 指令,有的人会问。哎哎哎,那 windows 下不是有一个所谓的压缩和解压吗???
你 Linux能不能实现这样的操作呢??
==》
答案是当然呢!我们今天要讲的指令,就是 Linux 下的打包和压缩。只不过呢,对于一些刚接触到系统的伙伴来讲,可能不太能够理解,打包和压缩这两个过程,它是在做什么事情的???

所以呢,今天在讲这些指令之前呢,我要先带伙伴们,感性的认识一下 什么是打包和压缩,还有为什么要打包和压缩。最后,我会简化一下,怎么打包和压缩。

简化到什么程度呢? —— 争取简化到能够像 windows 下的打包和压缩那样的操作。

1. 打包和压缩

1.1 是什么

在讲 是什么 之前,我先来给大家讲一个故事!

大家都知道,每年都会有新生季嘛。而在我们刚要去上大一的时候,是不是总有这么几个伙伴,大学之前没有过内宿学校经历,加上自理能力又比较差!那我们就假设,有这么一个准大一新生,张三,他的理能力很差!然后呢,要横跨大半个中国去上大学!他的爸爸麻麻呢,又非常的疼他,所以呢,在上大学之前,就把各自大包小包给他准备好了,像什么牙膏啊,牙杯啊等等,全部给 打包 塞进了一个大大的袋子里面。

那说到这里 ,大家肯定都知道为什么要将这些东西打包塞进一个袋子里面。如果你不打包塞进一个袋子里面统一存放,那难道我要左手牙刷、右手牙杯吗???
==》
那如果真的是这样的话!那么,到了学校那边,也只是,人到了而已!!!!其它都是都丢失了!!
==》
所以什么是打包??? —— 把所有东西装在一个包里,这就叫 打包
==》
故事到这里还没有结束。我们刚刚提到了,他的爸爸麻麻呢,非常的疼他。说:”我儿子要去上大学,就让他带这么点东西,怎么行呢?!!“ 所以啊,你的粑粑麻麻,又把各种衣服啊、被子啊,全部往包里赛,等到塞不进去了。你爸说,我还有办法!你就看你爸用各种压缩袋啊一套,把衣服啊、被子啊等物品里面的空气抽干!
==》
最后,本来占地面积两平方米的一个大大的被子,通过你粑粑的各种压缩操作,硬是给压缩到了只剩下不到 0.5平方米,最后再给你装到一个包里,再进行各种压缩!!!
==》
上述这个过程呢,就叫做压缩!!!

OK,我们感觉总结一下,所以,打包就是:将东西放在一起!!!
压缩就是:采用某种压缩算法,压缩它的存储空间!!!

1.2 为什么

所以我们为什么要打包和压缩呢???

打包无例外就是为了便于传输!!
为了方便 张三 把它各种零零碎碎的杂物,顺利的搬运到学校中去!
==》
而压缩就是为了更多更快的去传输!!
压缩之后体积不就变小了嘛,那张三就可以 更加轻松的把行李搬运到学校,或者可以携带更多的物品到学校去
!!
=》
所以归根结底,所以的打包压缩,就是为了便于传输,或者归档!!

所以这也是为什么,我们在 windows 下载软件的时候,很多时候下载下来的不是一个程序,而是一个压缩包!!!
==》
就是软件开发商为了让软件能够不丢失 并且 减少在网络上传输的时候的消耗,为了让用户下载的更快!!

1.3 怎么办?

我们都知道,在 windows 下,市面上有各种后缀的压缩包,同时也有非常多的解压工具。那在Linux 下,是不是也是如此呢??? —— 是的!

所以接下里呢,我主要带大家了解 Linux 下的两种常用的打包压缩和解压工具。

2. zip & unzip

假设此时我们的路径下有一个 project 目录,然后我们现在要对该目录进行打包压缩!

在这里插入图片描述

打包压缩完毕之后呢,我们通过 tree 一下 pro 这个压缩包,我们发现,这玩意里面,什么都没有!!
怎么回事呢??就算是压缩,也总不能压缩为 0 吧??

zip pro.zip project

Ok,那我们就来讲讲这条指令!
我们压缩一个文件或目录,压缩完后,通常都会有一个新的文件,也就是压缩包,所以我们需要给这个压缩包起个名字吧?所以 zip 后面带的 就是压缩完后的压缩包的名字,然后在对于要压缩的目标文件 / 目录

但是呢,这个 zip 指令 它默认通常就是用来打包压缩目录的!在我们现实生活中,大部分场景也都是压缩目录,而不是文件。当然,上述方法,是可以压缩一个普通文件的。 而压缩目录,我们还需要带上一个 -r 选项才能够!

有人或许要问了,为什么要带 -r 才能够压缩目录呢,你不是说,zip 默认就是压缩目录的吗 ???
==》
这个答案很简单,道理跟我们的 rm 命令相似,面对目录,我们需要通过 -r 递归来删除,所以 zip 也需要通过 -r 选项来达到压缩一个目录!!

zip -r dir.zip dir    # 打包压缩一个目录

在这里插入图片描述

我们可以明显的看到,这次的解压,完全就跟上一次不一样了。目录中的文件,也都被添加到了压缩包里。

在这里插入图片描述

我们可以看到,我们先是把原本的目录 project 给删除掉了,再把刚刚压缩好的 pro 原原本本的解压回去了,并且原本目录中,存在的文件,解压后也依旧存在!

所以解压就是!

unzip name.zip 

需要注意的是,如果目标压缩包后面不带任何路径,那么 unzip 默认就是解压到当前路径。

那有人要问啦!那我在 windows下,我解压文件的时候,人家都会问我,解压后存放到到哪个路径呀,那 unzip 有没有这样的功能呢?!!
==》
答案是,有的!!

在这里插入图片描述
我们可以看到,我们通过 -d 选项 + 目标路径 (可以是绝对路径,也可以是相对路径),成功的把 pro.zip 这个压缩包解压到了 test 目录下!!

所以解压到指定路径就是!

unzip name.zip -d 目标路径

OK,我们赶紧总结一下 zip 这条指令

zip -r name.zip 你的目录名
unzip name.zip  				#默认解压到当前路径
unzip name.zip -d 目标路径 		#解压到指定的路径

3. tar 指令

先总体讲一下,这个 tar 指令,非常的不好玩,它的选项太多了!!!!所以,选项一多,就变复杂了,也使得我们在学习的时候成本有所提高,所以玩不过来啊!!!
那么,我先概念性的介绍一下,tar 它的一些常用选项,再来做具体的分析和演示

-c:建立一个压缩文件的参数指令(create的意思);
-x: 解开一个压缩文件的参数指令!
-t: 查看tarfile 里面的文件!
-z: 是否同时具有gzip的属性?亦即是否需要用gzip 压缩?
-j: 是否同时具有bzip2的属性?亦即是否需要用 bzip2 压缩?
-v: 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数!
-C:解压到指定目录

相信大家看到上面的这各式各样的选项后,那简直是一个头大!!但是我们又不能不了解,所以呢,我们会对其弱化一下,尽可能的让大家更容易去上手这么一个 tar 指令!

还是以上面的场景为例,当前路径有一个 project 的目录,我现在要用 tar 压缩它。

tar -czvf project.tgz project 
// 其中的 -c 就是creat,创建一个压缩包,也就是创建一个可以打包并压缩的文件
//  -z 就是压缩的意思!!
//  -f 表示的就是创建一个对应的文件所对应的文件名(也就是要创建一个压缩后的文件名)
//  -v 就是显示这个压缩过程
//  project.tgz 它的本质其实是 project.tar.gz --> tar是打包的意思,gz是压缩的意思
//	所以 .tar.gz就是打包并压缩的意思,但是我们不推荐这样写,太麻烦了,我们可以直接写成 .tgz
//  project 表示的就是我们要压缩的文件/目录

在这里插入图片描述

不过在这里,我有一个建议,就是如果非特殊情况,我建议我们一般不要带 -v 显示的压缩过程,为什么呢???
==》
因为不排除有一些文件特别大,或者有些目录里面的文件特别多!那么显示压缩,可能就需要特别久,而且整个屏幕都会显示文件,就很不方便!除非你有些情况,你想查看压缩过程,那么可以把 -v 选项带上压缩!!

好了,现在压缩我们会了,那解压呢??

tar -xzvf project.tgz
// 这就是解压!! 把 -c 创建一个压缩包 换成 -x ,其它都不变,就可以解压了!!
// 所以 -x 就是解压的意思!!
// 而这里的 -z 有两层意思,如果你是压缩,那 -z 就表示压缩,如果你是解压,那 -z 就表示解压!

在这里插入图片描述

我们先把原目录删除,然后我们在通过解压 .tgz文件,可以看到源目录被原原本本解压出来了!!!

同样的,不显示解压过程,那就是把 -v 选项 去掉就好了!!

如同 zip & unzip 指令一样, tar 是否也能够解压到指定路径呢??
==》
当然呢!在谈论 zip 的时候,我们采用的是相对路径法,那么我们这次就以绝对路径来演示!

tar -xzvf project.tgz -C 目标路径
// -C 就是指定路径压缩

在这里插入图片描述
我们可以看到,解压到指定路径下之后,我们 tree 以下解压后的目录,里面的东西,还是存在且一模一样的!!

ok,讲到这里,我们再拓展一下,-t 选项是干嘛用的呢?? 怎么用??
==》
-t 是用于查看 tar 包里面的文件的,什么是 .tar 包,我们上面讲了,tar 就是打包的意思,所以 .tar 包就是只打包、不压缩的文件!!
==》
那么怎么只打包,不压缩呢??

tar -cf project.tar project 
// 打tar呢,就不是 -czf 了, 因为我们讲,-z 打包压缩的时候,它就是压缩的意思,而此时我们只想要打包,不想要压缩,所以我们不需要它!!
// 而 -f 就是为打包后的文件起一个名字

那么这样,一个 tar 包就创建好了! 那我们就可以通过 -t 来查看整个文件里面的内容了!

tar -tf project.tar
// 此时的 -t 就是查看tar包

在这里插入图片描述

那打包也会了,查看也会了,那解开 tar 包,怎么解呢??

tar -xf project.tar
// 与打包同理,这里解开的是tar包,所以不需要 -z来解压!!

在这里插入图片描述

还是一样,我们先把原本的目录 project 删除,然后再通过解开 tar 包,还原 project

到这里可能有人要问啦!那你口口声声说,tar 包 就是打包的,没有压缩的,而 tgz 才是打包压缩的,你怎么知道的呢??
==》
答案很简单,大家可以对比 tar 包 和 tgz 包 的文件大小

在这里插入图片描述

我们在铺垫打包和压缩的时候,我们就讲到,打包呢,并不会减小体积,压缩才会减小体积!!
所以我们也可以看到 tar 包的大小 要比 tgz 包的大很多!!


结语:

OK,Linux 所有常用的基本指令就讲到这。如果不出意外的话,这是最后一篇讲 Linux 的指令了。后续如果有需要,我会继续进行拓展。

当然,指令的学习,我们还远远没完。后续呢,还有 vim 编辑器的指令操作,还有 gdb 调试器的 指令,等着我们学习!!

最后,如果我的文章能给你带来一定的帮助,或者是收获,我很开心。
同时,觉得对你有帮助的伙伴们,也可以 点赞👍 + 收藏⭐️ + 关注➕,支持一下!
感谢各位观看!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/141309.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

C++核心编程

本阶段主要针对C面向对象编程技术做详细讲解,探讨C中的核心和精髓。 1 内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量…

总结 HTTP 协议的基本格式和 fiddler 的用法

HTTP基本格式 HTTP协议也是日常开发中非常常用的的一种协议,在众多协议栈里HTTP可能是实际开发中用的最多的。 注意 这里说的HTTP是指HTTP1以及HTTP2,他们都是基于TCP协议的,注意:如今最新版的HTTP3是基于UDP的。 但如今在互联网…

SQL server 创建存储过程

SQL Server如何创建存储过程 存储过程: 可以理解为完成特定功能的一组 SQL 语句集,存储在数据库中,经过第一次编译,之后的运行不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数…

常用数据库validationQuery语句

常用数据库validationQuery语句 validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句, 下表中收集了几种常见数据库的validationQuery。DataBase validationQueryhsqldb …

Linus Torvalds接受来自微软的Linux Hyper-V升级

微软最近推送了一些变更,旨在改进即将发布的 Linux 内核 6.6 版本对 Hyper-V 的支持。这些改进包括在 Hyper-V 上支持 AMD SEV-SNP guest 和 Intel TDX guest。除了这两项,还有其他一些升级,如改进了 VMBus 驱动程序中的 ACPI(高级…

怒刷LeetCode的第15天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:哈希表双向链表 方法二:TreeMap 方法三:双哈希表 第二题 题目来源 题目内容 解决方法 方法一:二分查找 方法二:线性搜索 方法三:Arrays类的b…

C语言结构体的一些鲜为人知的小秘密

目录 一、结构体内存对齐规则: 1.1范例 1.2结构体内存对齐规则 1.3自定义默认对齐数 二、位段 2.1什么是位段 2.2位段的内存分配 2.3位段的不足 三、枚举和联合体 3.1枚举 3.1.1枚举类型的定义 3.1.2枚举类型的使用 3.2联合体 3.2.1联合体的定义 3.…

IDEA新建.xml文件显示为普通文本

情况如下: 1. 在XML文件中添加*.xml的文件名模式 2. 在文本中,选中*.xml进行删除

顺序读写函数的介绍:fscanf fprintf

目录 函数介绍: fprintf: 将结构体变量s的成员列表内容写入文件中: 文件效果:已经进行了格式化,3.140000是最明显的效果,因为float需要补齐0来补充精度 和printf的对比: 不同之处&#xff…

mac 解决 vscode 权限不足问题,Insufficient permissions

commod 空格,输入终端并打开写入指令 sudo chown -R xxxxxx1 xxxxx2(例如我的sudo chown -R admin Desktop,具体参数查看下方) x1: 用户名,可通过左上角查看 x2: 目标文件夹。可以另起一个终端,用cd 和 l…

Java函数式接口(Consumer、Function、Predicate、Supplier)详解及代码示例

函数式接口 java.util.function : Consumer :消费型函数接口 void accept(T t) Function :函数型接口 R apply(T t) Predicate :判断型接口 boolean test(T t) Supplier :供给型接口 T get() Consumer - 消费型函数接口 该接口代表了一个接受一个参数并且不返回结果的操作。…

【MySql】2- 基础篇(下)

文章目录 1. MySQL锁1. 1 全局锁1. 2 表级锁1. 3 行锁1. 3 .1 两阶段锁1. 3 .2 死锁和死锁检测 2. 事务是否是隔离的?2.1 快照在MVCC中如何工作 1. MySQL锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合…

CCF-CSP真题《202305-2 矩阵运算》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202305-2试题名称:矩阵运算时间限制:5.0s内存限制:512.0MB问题描述: 题目背景 Softmax(QKTd)V 是 Transformer 中注意力模块的…

甲骨文创新中心与正初为职教集团达成人才培养合作,探索数实结合产教融合模式

2023年9月20日,甲骨文(南京)人工智能创新中心(以下简称“甲骨文创新中心”)与正初为职教集团在南京举行了战略合作签约仪式。甲骨文创新中心正式宣布和正初为职教集团达成职业教育数实结合产教融合合作协议&#xff0c…

(十一)VBA常用基础知识:worksheet的各种操作之sheet删除

当前sheet确认 2.Sheets(1).Delete Sub Hello()8 Sheets(1).DeleteSheets(1).Delete End Sub实验得知, Sheets(1).Delete删除的是最左边的sheet 另外,因为有弹出提示信息的确认框,这个在代码执行时,会导致还需要手动点击一下&a…

旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著作想象和世界一样宽广

旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著作想象和世界一样宽广

【注射论文基因,那些年不为人知的AI工具】

我们都知道写论文有很多前期准备工作&#xff0c;例如<任务书>、<文献综述>等等&#xff0c;那么我们能够用什么工具最大限度的提高完成效率的同时还能保证质量呢&#xff0c;让我们接着往下看&#x1f447; 1.文献快速阅读-iTextMaster 文章主题确定了&#xff0…

Android逆向技术高阶大法

原文链接 Android逆向技术高阶大法 安卓应用是一个客户端&#xff0c;与传统软件类似&#xff0c;需要把软件打包&#xff0c;然后通过某种渠道&#xff08;应用市场&#xff09;分发给用户&#xff0c;这是常规的发布方式&#xff0c;它的更新节奏很慢&#xff0c;从你在应用…

【加载数据--自定义自己的Dataset类】

【加载数据自定义自己的Dataset类】 1 加载数据2 数据转换3 自定义Dataset类4 划分训练集和测试集5 提取一批次数据并绘制样例图 假设有四种天气图片数据全部存放与一个文件夹中&#xff0c;如下图所示&#xff1a; ├─dataset2 │ cloudy1.jpg │ cloudy10.jpg │ …