【Linux探索之旅】第四部分第一课:压缩文件,解压无压力



内容简介

1第四部分第一课:压缩文件,解压无压力

2、第四部分第二课:SSH连接,安全快捷


压缩文件,解压无压力

最近小编因为换工作,从南法搬到巴黎。折腾了很久。

网络一直用的是公共的无线网,信号不行。无线上网的box盒子已经说通网了,但我觉得墙上的线有问题。反正就是用不了自己的告诉WiFI盒子。

而且还要继续找房子,刚上班第一周,诸多事情,所以最近停更了很久。不好意思。

不过,现在又重新开始啦。木啊哈哈哈~

百足之虫,死而不僵。。。

第四部分我们会讲Linux网络方面的一些知识点。既然讲到网络方面,首先我们可以介绍一下如何压缩和解压文件,因为我们在网络上传输文件的时候,通常都会先将其压缩。

说到压缩文件,如果是Windows用户,那应该对rar和zip两种格式不陌生。一般在Windows下,我们会使用Winrar,7zip等压缩解压的软件。这些软件中有些是收费的,比如winrar。

在Linux下,我们有很多免费的压缩解压软件可供选择,比如gzip和bzip2。不过,gzip和bzip2,不能同时压缩多个文件,一次只能压缩一个文件。

不过,Linux这样的开源社群可厉害了,他们还有一个软件tar,算是Linux下用得挺多的程序了吧。tar可以同时压缩多个文件。

当然了,Linux下也有解压zip和rar格式的软件。

这一课没什么技术难点,不过有些概念还是比较重要的。

就当茶余饭后,休闲泡脚吧... 当然,之后千万不要用洗脚水泡茶...



tar命令:将多个文件归档

首先,我们需要弄清楚两个概念:打包和压缩。

  1. 打包,是将多个文件变成一个总的文件,这个总的文件我们通常称为archive,英语是《存档,归档》的意思。
  2. 压缩,是将一个大文件通过某些压缩算法变成一个小文件。

所以,其实引言中所提到的tar命令,gzip和bzip2命令是这样使用的:

  1. 用tar将多个文件归档为一个总的文件,称为archive。
  2. 用gzip或bzip2命令将archive压缩为更小的文件。

可以用下图来描述此过程:

所以,我们会首先介绍tar命令,然后再学习gzip和bzip2命令。当然了,我们也会学习如何在Linux下解压zip和rar格式的文件。

zip和rar格式是可以同时归档和压缩的。

将多个文件合并为一个文件

我们来实际操作一下。

假设我现在创建了一个目录,叫做compression,是英语“压缩”的意思,然后在此文件夹中再创建一个目录,叫做tutorial,是英语“教程”的意思。在tutorial目录中,我放入三个C语言的源文件。如下图所示:

我们就可以用tar命令对这三个文件进行归档。

-cvf:创建一个tar归档

我们可以这样来创建一个tar归档:

tar -cvf tutorial.tar tutorial/

tar命令的三个选项参数分别表示:

  1. c:c是create的缩写,表示“创建”。
  2. v:v是verbose的缩写,表示“冗余”。会显示操作的详细。
  3. f:f是file的缩写,表示“文件”。指定归档文件。

执行以上的命令之后,可以从tutorial这个文件夹(里面包含ws.c,test.c,hanio.c三个文件)创建tutorial.tar这个归档。

因为加了v选项,所以列出了被归档的三个文件。

难道我们一定要先把三个文件都放到tutorial这样的一个目录,才能用tar归档吗?

不是的,我们也可以直接对文件进行归档操作,不需要先把所有文件放到一个目录里,如下:

tar -cvf archive.tar file1.txt file2.txt file3.txt

就会把file.txt,file2.txt,file3.txt归档为archive.tar。

-tf:显示归档里的内容,并不解开归档

我们可以用tf选项参数来看一下我们刚生成的归档tutorial.tar中的内容。

tar -tf tutorial.tar

可以看到,tutorial.tar这个文件里,首先包含的是tutorial这个目录,目录里有三个文件:ws.c,test.c,hanio.c


般,建立归档之前,最好把所有文件都先放置到一个目录里。因为假如你拿到的归档文件是不包含目录的(如上面 tar -cvf archive.tar
file1.txt file2.txt file3.txt这样),并且里面有好几百个文件,你将其解开到你的家目录,那会乱成一团的。

-rvf:追加文件到归档

例如:

tar -rvf archive.tar file_extra.txt

表示将file_extra.txt这个文件添加到archive.tar归档中。

-xvf:解开归档

算是-cvf的相反操作。将生成的归档解开。x是extract的缩写,表示《提取,取出》。

tar -xvf tutorial.tar



gzip和bzip2命令:压缩归档

现在我们已经学会用tar命令来创建一个归档了,接下来,我们就学习如何压缩这个归档吧。

Linux中常用的压缩命令是gzip和bzip2。功能类似。

  1. gzip:比较常用。
  2. bzip2:不是那么常用。bzip2的压缩率比gzip更大,但是更耗时。

这两个命令的用法也很简单,只需传入要压缩的归档作为参数。经过压缩,归档的后缀名也会改变。

  1. .tar.gz:这是用gzip命令压缩后的文件后缀名。
  2. .tar.bz2:这是用bzip2命令压缩后的文件后缀名。

两个压缩命令的用法如下:

gzip tutorial.tar
bzip2 tutorial.tar

就会分别生成tutorial.tar.gz和tutorial.tar.bz2两个压缩文件。

如果要对这两个命令生成的压缩文件分别进行解压,可以使用gunzip和bunzip2两个命令:

gunzip tutorial.tar.gz
bunzip2 tutorial.tar.bz2

用tar命令同时归档和压缩

之前我们只介绍了tar命令的归档作用,其实我们可以用tar命令同时完成归档和压缩的操作,一气呵成。

当然了,也就是给tar命令多加一个选项参数,使之完成归档操作后,还是调用gzip或bzip2命令来完成压缩操作。

-zcvf:归档,然后用gzip来压缩归档

tar -zcvf tutorial.tar.gz tutorial/

一步到位,从tutorial目录,归档、压缩,生成tutorial.tar.gz文件。

要解压,也可以一步到位:

tar -zxvf tutorial.tar.gz

相信常用Linux系统的用户对这个命令应该很熟悉吧。

-jcvf:归档,然后用bzip2来压缩归档


tar -jcvf tutorial.tar.bz2 tutorial/

一步到位,从tutorial目录,归档、压缩,生成tutorial.tar.bz2文件。

要解压,也可以一步到位:

tar -jxvf tutorial.tar.bz2

zcat,zmore,zless:直接显示用gzip压缩的文件的内容

cat,more和less三个命令我们已经很熟悉了,是用于显示文件内容。

如果是压缩文件,比如我们上面生成的tutorial.tar.gz,如果直接用cat,more或less命令来显示,是会显示乱码的。

cat tutorial.tar.gz

但是用zcat,zmore,zless命令就可以显示用gzip命令压缩的文件的内容了:

zcat tutorial.tar.gz



unzip和unrar命令:解压zip和rar文件

尽管.tar.gz和.tar.bz2结尾的压缩文件在Linux世界很常见,但是如果某个Windows用户给您发送压缩文件,大部分情况可能是.zip或.rar结尾的压缩文件,那么在Linux下如何解压这类来自Windows世界的外来物呢?

不必担心,我们可以用unzip和unrar命令来分别解压.zip和.rar格式的压缩文件。

unzip:解压.zip格式的压缩文件

一般Linux发行版中默认没有安装这个程序,我们可以用以下命令来安装:

sudo apt-get install unzip

安装完之后,要解压.zip格式的压缩文件,可以这样:

unzip archive.zip

很简单吧。

如果不想解开.zip文件,只想看其中的内容的话,可以加上-l参数:

unzip -l archive.zip

在Linux中,虽然不常见,但是有时候我们也需要创建.zip格式的文件,我们可以安装zip这个程序:

sudo apt-get install zip

想要生成.zip格式的压缩文件,可以这样:

zip -r archive.zip archive/

注意这里有一个-r参数,须要加上,如果不加,则只会压缩空文件夹而已。加上-r参数,则会递归压缩目录和子目录中的所有文件。

unrar:解压.rar格式的压缩文件

类似于unzip,安装unrar的命令如下:

sudo apt-get install unrar

安装完之后,要解压.rar格式的压缩文件,可以这样:

unrar e archive.rar

可以看到,有些意外,因为e这个选项参数前面没有-,人生总是有意外的不是吗?unrar这个命令的作者显然是不走寻常路。

如果不想解开.rar文件,只想看其中的内容的话,可以加上l参数(是的,也不加-):

unrar l archive.rar

那如果我想在Linux中创建.rar格式的压缩文件呢?

不好意思,.rar格式的压缩软件并没有公开,解压的软件是免费的。如果你要压缩rar文件,那只能去买收费软件。

Linux下也有rar这个软件,你也可以下载安装,但这是一个试用软件,到了一定天数后,就会收费。不过,zip软件是免费的。


第四部分第二课预告

今天的课就到这里,一起加油吧!

下一课我们学习:SSH连接,安全快捷

时间: 2024-10-08 06:55:11

【Linux探索之旅】第四部分第一课:压缩文件,解压无压力的相关文章

【Linux探索之旅】第二部分第一课:终端Terminal,好戏上场

内容简介 1.第二部分第一课:终端Terminal,好戏上场 2.第二部分第二课预告:命令行,世界尽在掌握 终端Terminal,好戏上场 随着第一部分的结束,我们进入了第二部分(小编你这好像是废话...). 也许是第一部分有点偏理论,而且安装Linux的发行版Ubuntu系统又比较难概述,所以小编备受折磨之后,有点"青年痴呆"也是正常. 但我向你保证,从这一部分开始,好戏正式上演! 经过第一部分的洗礼,我们了解了Linux的历史和很多概念,如何安装Linux,Linux的桌面环境和图

Linux探索之旅 | 第五部分第二课:一入Shell深似海,酷炫外壳惹人爱

-- 简书作者 谢恩铭 转载请注明出处 内容简介 前言 Shell是什么? 我们的第一个Shell脚本 运行Shell脚本 总结 第五部分第三课预告:变量在手,Shell不愁 1. 前言 上一课是 Linux探索之旅 | 第五部分第一课:Vim岂是池中物,宝剑锋从磨砺出 . 现在,我们已经学习了 Vim 这样强大的文本编辑器.相信我,Vim 对我们之后的课程会非常有用. 这一课我们可以进入第五部分的重心了:Shell 编程. 什么是Shell呢? 首先,shell 是英语"壳,外壳"的

【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握

内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:"小编,你为什么每次都要起这么非主流的标题呢?不能愉快地玩耍么?" 小编:"那我问你,老子他为什么要写<道德经>咧?" 读者:"为什么咧?" 小编:"因为老子愿意!" 开个小玩笑轻松一下 O(∩_∩)O~ 没办法,不能不激动,因为我们终于来到了这一刻,

【C语言探索之旅】 第二部分第一课:模块化编程

内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

【C++探索之旅】第二部分第一课:面向对象初探,string的惊天内幕

内容简介 1.第二部分第一课:面向对象初探,string的惊天内幕 2.第二部分第二课预告:掀起了"类"的盖头来(一) 面向对象初探,string的惊天内幕 上一课<[C++探索之旅]第一部分第十二课:指针一出,谁与争锋>中,大家辛苦了. 诚然,指针是不容易啃的硬骨头.不过,假以时日,小火慢炖,可以成为一碗上好的骨头汤,对你的C++水平那可是大补. 好了,口水擦一擦,我们正式进入C++探索之旅的第二部分啦,激动不?刚擦完的哈喇子可不要继续流啊. 这一部分的课程称为:C++之

【C语言探索之旅】 开宗明义及第一课:什么是编程?

内容简介 1.课程大纲 2.第一部分第一课:什么是编程? 3.第一部分第二课预告:工欲善其事,必先利其器 ? 课程大纲 不知道为什么,一直对C语言有一种很深厚的"情怀"(类似老罗对锤子手机的那种),说不出来. 也许因为C语言是很多前辈谆谆教诲说一定要学一下的一门编程语言:也许因为C语言是自己学习的专业"嵌入式系统"的首要语言:也许因为C语言自1972年诞生以来历经43年依然独领风骚,位列编程语言排行榜首位:也许因为"C语言之难,难于上青天",自己

【Web探索之旅】第二部分第一课:客户端语言

内容简介 1.第二部分第一课:客户端语言 2.第二部分第二课预告:服务器语言 第二部分:Web编程语言和工具 大家好.上一个部分我们学习了Web的一些基本概念: 什么是Web? Internet和Web的区别 Web的历史 第二部分我们会正式进入Web学习的主题了.我们会带大家了解一个我们平时访问的网站(Web site)是如何运作的.首先我们来看看Web开发使用到的编程语言和数据库,一些框架和内容管理系统,还有响应式设计.这一部分会有不少原理,概念比较重要,不过我们会用形象地比喻来阐明. 第二

【Linux探索之旅】第二部分第九课:查找文件,无所遁形

内容简介 1.第二部分第九课:查找文件,无所遁形 2.第二部分测试题 查找文件,无所遁形 这一课不难,但挺重要的. 之前的课程我们见识过了Linux下文件的组织形式是很特别的,跟Windows不一样. 我们也用ls / 这个命令来列出根目录下的所有目录,有/bin,/etc,/var,/home,等等.而这些目录下又有子目录和文件,错综复杂. 这些目录中有一部分是历史遗留的,从Unix时代就有了.问题是:我们如何在这"茫茫文海"中查找我们需要的文件. "人潮人海中,有你有我.

【Linux探索之旅】第三部分测验题

内容简介 1.第三部分测验题 2.第四部分第一课:压缩文件,解压无压力 第三部分测验题 wc命令做不到以下哪一项? A. 统计单词数 B. 统计行数 C. 为文件内容排序 用grep命令搜索文本,何时需要用双引号包裹搜索的关键字? A. 关键字超过10个字符 B. 关键字是正则表达式 C. 关键字包含空格 重定向符号>>,在文件不存在时,会创建文件吗? A. 会 B. 不会 2>&1表示什么? A. 使标准错误输出与标准输出重定向到同一个地方 B. 将标准错误输出重定向到文件 C