“ 在windows里,我们经常会对文件进行压缩和解压缩操作,这是我们在日常使用必不可少的操作,但是没有图形化的linux应该如何操作呢?”
# 下载下面链接的文件 并命名为Gp.bigbed
https://ftp.ncbi.nlm.nih.gov/geo/series/GSE96nnn/GSE96299/suppl/GSE96299_ENCFF292AVT_peaks_hg19.bigBe
wget -O Gp.bigbed https://ftp.ncbi.nlm.nih.gov/geo/series/GSE96nnn/GSE96299/suppl/GSE96299_ENCFF292AVT_peaks_hg19.bigBe
# 一次性在后台下载下面的所有文件
vim dlist1
# 将后面的三个链接放进dlist1中
wget -b -i dlist1 -o w.log
通过上节课的学习,相信你已经学会了如何从互联网进行文件的下载,但是我们可以看到很多文件是压缩文件,而且我们在日常使用中也会经常进行压缩操作和解压操作。
在Windows中,我们大部分都会使用winrar或者bzip等等压缩程序进行压缩和解压缩操作,但是在没有图形化界面的linux下,我们应该如何进行压缩和解压操作呢。这就是我们今天要讲解的两组命令,zip系列和tar系列。
在Linux中,所谓的压缩操作其实有两种,我们分别称为打包和压缩。压缩,就是我们理解的,通过算法对一个文件进行压缩,使其占用空间变小。而打包操作,就是对一个目录以及目录下的所有文件进行打包在一起,做成一个文件,这个过程称为打包,有的时候也叫它归档。不过现在的打包软件已经集成了压缩功能,打包以后会进行压缩,不用我们在进行一次压缩了。
zip压缩
我们在windows中用的最多的压缩格式其实就是zip格式了,它在我们的linux下也是可以使用的。
而且对于zip来说,它是可以直接把目录放在一起进行压缩的,不过对于压缩效率和压缩时间来说,zip并不是最好的格式和压缩方法,故此处我们简要介绍一下如何创建zip和解压zip文件。
下面首先创建一些文件和文件夹来供我们进行压缩
(如果你看不懂下面在做什么,请重新学习Linux系列2-5)
cd ~
mkdir testdir
cd testdir
mkdir testzip
cd testzip
vim f1
vim f2
vim f3
cp /etc/passwd .
cd ..
zip命令格式:zip 参数 压缩结果文件名 待压缩文件1 待压缩文件2 . . .
我们目前是有这样的一个目录,下面先进行单个文件压缩操作
# 使用zip进行单个文件的压缩
cd testzip
zip passwd.zip passwd
我们可以看到压缩完成了,得到了,zip文件,这就是压缩单个文件的操作。
我们的zip命令不止能压缩单个文件,它最神奇的是可以压缩多个文件,不需要你新建目录就可以直接压缩哦
rm passwd.zip
zip 3.zip f1 f2 f3
这就是压缩多个文件的操作。
下面再讲解几个非常重要的参数吧,都是非常有用的参数
# -m参数 压缩以后删除被压缩的文件
rm 3.zip
zip -m 3.zip f1 f2 f3
第二个参数是压缩目录的操作
# -r 参数 可以对目录进行压缩
cd ..
zip -r -m t1.zip testzip
上面的就是普遍的压缩操作,讲完了压缩,我们来讲如何对zip文件进行解压缩吧。解压缩操作就比较简单了,基本一条命令直接解决
# 查看压缩文件内容
unzip -v t1.zip
# 进行解压缩 -d参数指定解压到什么位置
unzip -d . t1.zip
解压文件也是一样的操作
# 解压文件
cd testzip
unzip 3.zip
gzip和bzip压缩
上面讲解了zip的压缩和解压缩操作,但是我们平时除了.zip压缩文件以外,其实见的最多或者用的最多的就是.gz文件还有.bz2文件了,这两种压缩方法各有千秋,gz的压缩速度更快,而bz的压缩比更好,不过大家没必要在意这些东西,知道看见什么格式用什么解压就好了。
在生物信息当中,或者linux中,我觉得见的最多的应该gz文件了,我们就从gz的压缩和解压缩开始讲起来吧。
由于上面详细的讲解了zip的操作和参数,其实其他的压缩命令也都大同小异,此处就没有很多的截图了,大家一定要自己尝试练习一下,这样才会有个印象,最起码知道压缩是用的什么程序。
使用gzip进行压缩操作,
以及如何压缩以后保留源文件并且重命名压缩后的文件
cd testzip
# gzip会默认压缩源文件但是不保留源文件
gzip passwd
gunzip passwd.gz
# 如果你想保留源文件请使用-c参数
gzip -c passwd > passwd.gz
(-c参数讲解,现在不懂没关系,后面会讲解管道和重定向的,-c将压缩好的结果放到标准输出,然后使用重定向放进文件passwd.gz中)
gzip是不可以压缩目录的,如果你指定了一个目录进行压缩,它会把目录下的所有文件都单独进行压缩,得到.gz文件,大家自己尝试一下即可。
对gz文件的解压操作
# 基础解压
gunzip passwd.gz
# -l命令 查看压缩文件基本信息 如压缩比 文件名等等
gunzip -l passwd.gz
# -c 和gzip相似,只是把解压结果放进标准输出了
gunzip -c passwd.gz > p1
下面就是关于bzip的讲解,其实gzip讲完了,bzip就更没什么可以讲的了
# 基本压缩
bzip2 passwd
# 解压缩
bunzip2 passwd.bz2
# 保留原始文件
bzip2 -k passwd
# 也是保留原始文件
bunzip2 -k passwd.bz2
最后,还有一个数字参数,是gzip和bzip共有的,放在这里进行讲解
这个数字参数是压缩比,1是压缩比最差的,9是压缩比最高的
# 此处使用gzip举例
gzip -1 passwd
gzip -c -9 p1 > passwd1.gz # 这里的p1和passwd是一样的
ls -lh
相信大家应该已经看懂了。
tar归档打包
好了,最后的最后,我们来讲解一下tar命令,这个命令很多人初学的时候都很懵逼,因为这个命令都是各种组合参数,什么cvf什么xvf什么cvzf一类的。
大家用着非常不舒服,觉得不如zip用着实在,但是很多文件就是使用tar进行打包归档的,后缀名是.tar.gz这种,又必须得使用它,让人头疼。不过学了接下来的内容,你就再也不会头疼了,让我们开始吧。
我们来一组一组的说,首先说c和x参数,
-c参数:打包操作
-x参数:解打包操作
也就是说,只要我们进行打包操作,我们就必须使用-c参数,只要进行解打包操作,我们就必须使用-x参数。
然后是必须出现的两个参数,-v参数和-f参数
-v参数:显示过程
-f参数:指定打包结果名称(待解包的包名)
这两个参数,我们是始终的都要进行使用的,这是非常好的习惯。
讲了这几个参数以后,我们就可以开始打包了
# 打包我们的testzip文件夹
tar -cvf tz.tar testzip
rm -rf testzip
下面是解打包,只需要把c换成x就可以了
上面就是打包操作的全流程了,但是我们经常还能看见另一组参数,-z参数和-j参数。还记得我们上面说过,tar命令具有打包压缩功能吗,这两个参数就是对tar打包的文件进行压缩操作的方法。
-z参数:生成.tar.gz的压缩
-j参数:生成.tar.bz2的压缩
一目了然,让我们赶快来试试吧
# 使用tar打包为.bz2
tar cvfj testzip.tar.bz2 testzip/
# 删了原始的 更真实的模拟真实操作
rm -rf testzip
# 解压bz2的包
tar xvfz testzip.tar.bz2
是不是已经超级简单了,看到xcfvzj这种参数都没有了陌生感,后面再练习一下就可以彻底掌握了。
# 清理文件
cd ~
rm -rf testdir
# 在家里建立test文件夹
# 在test文件夹建立文本文件 t1 t2 t3 并且复制/etc/fstab过来
# 压缩t1 t2 t3为bz2
# 压缩fstab为gz并且保留原始文件
# 打包test目录为一个.tar.gz
# 删除原始目录
# 解压test文件夹
# 解压fstab
# 解压包含t1t2t3的bz2文件
今天的分享就到这里了,下一次的分享将是Linux中的终极概念,管道和重定向,学会了这两个概念,你才算是真正的开始对Linux的探索之旅。
如果你喜欢我的文章,请收藏我的文章并且给我个赞,你的支持就是我更新的最大的动力,关注我会有更多惊喜哦,专注于生物信息学以及数据分析入门和进阶教程,也许我给不了你从10-100,但是我可以给你最好的从0-10!
最后,关注我的公众号,领取更多学习资料吧!!!
打开v搜索,”轻松玩转生信“或者从下面文章进去获取二维码关注哦