「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」。
前言
好久没有记录Linux命令了,这次文章相当于一个笔记。
在使用Linux时候,难免需要对文件进行解压或者压缩,尤其是在服务器上,没有GUI界面,用Shell进行操作,就需要我们会一些命令:
zip&unzip:ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate。在Linux可以使用zip命令对其压缩或或增减;使用unzip可以解压出ZIP文件。tar&gz:tar是Unix和类Unix系统上的归档打包工具,可以将多个文件合并为一个文件;而gz或者说gzip则类Unix上的文件解压缩的软件。两个经常一起使用。
ZIP
针对ZIP文件,主要有两个命令:
# 解压
uizp
# 压缩
zip
细节参考:
解压:unzip
直接解压
首先介绍最常用的,也就是不带参数直接解压:
unzip juejinTemp.zip
可以看到,解压就成功了。
指定输出目录
如果你想制定输出目录:
# 解压文件到temp目录内
unzip -d temp juejinTemp.zip
注意:如果
temp文件夹不存在,那么会自动创建这个文件夹(如果全新足够);但是如果上级目录都不存在,就创建不了了哦。
文件详情
当然,如果想知道ZIP文件里是什么,如何再决定是否需要创建文件夹解压。也很简单:
unzip -l juejinTemp.zip
这里使用
-l命令,你也可以用-v替代。区别就是,后者显示内容更详细。
可以看到,图一就是解压后,会有一个文件夹套住剩下四个文件。而图二就没有。这个时候,建议图二解压时候,用-d命令指定到空文件夹内。
指定具体文件
最后,如果你只想解压出内部一个文件,也很简单:
unzip juejinTemp.zip juejinTemp/after.txt
事实上,这个命令是一个变长参数语法糖,你可以后面更多个文件来指定需要解压的东西:
指定文件排除
相对的,如果解压过程中,只想排除某个文件,可以使用-x命令:
unzip juejinTemp.zip -x juejinTemp/1.txt
跳过和覆盖
刚刚可以看到,我解压时候有提示:
replace juejinTemp/after.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename:
这个其实是解压目的地址已经有这些文件,问我是跳过还是替换、放弃。
如果你也开始就知道要替换,可以加上-o参数;如果选择跳过,那么可以加上-n参数。
压缩:zip
直接压缩
压缩不一样,压缩一定要指定输出的文件名:
zip -q -r juejinTemp.zip *
其中:
-q:不显示输出,即:zip运行日志-r:递归压缩,即:文件夹下内容递归*:所有文件
也就是当前文件夹下所有文件全部压缩。切勿在根目录下使用嗷。
相对,想指定压缩目录:
# 压缩文件夹
zip -r juejinTemp juejinTemp
删除文件
zip还可以删除文件,举个例子。我们使用unzip查看:
我们想要删除1.txt,只需要用-d命令:
zip -d juejinTemp.zip juejinTemp/1.txt
TAR
一般tar等文件开头的文件,使用tar命令即可。
比如:zulu8.60.0.21-ca-fx-jdk8.0.322-linux_x64.tar.gz。
这个命令比ZIP命令复杂多了。这次就介绍解压(归档)和压缩。足够大家日常使用了/
解压命令
每次看到什么tar.gz、tar.bz2、tar.xz、tar.Z等等结尾的tar文件,是不是眼花缭乱?网上解压方法也是五花八门。
其实 tar从1.15版本开始tar就可以自动识别压缩的格式,故不需人为区分压缩格式就能正确解压:
tar --version
所以解压只需要一条命令:
tar -xf juejinTemp.tar.gz
其中:
-x:解开一个压缩档案的参数指令!-f:使用档名,在f之后要立即接档名嗷。
如果希望显示细节,可以加入参数v,即verbose:
tar -xvf juejinTemp.tar.gz
如果想要指定解压地址:可在压缩文件后,加空格并加入解压输出地址目录
查看详情
如果你并不想解压,可以使用:
tar -tf juejinTemp.tar.gz
压缩/归档
压缩文件也比较简单,一条命令:
tar -czf juejinTemp.tar.gz juejinTemp
这样,就将当前目录下所以文件压缩成compression.tar.gz压缩包了。
其中:
-c:压缩的的参数指令!-z:启动压缩,不加这个参数,则是普通归档。-f:使用档名,在 f 之后要立即接档名嗷。
你会看到,我多了.DS_Store文件,其实是macOS的日志文件。解决方法很简单,加上--exclude '.DS_Store' --exclude '__MACOSX'即可:
如果你只是想归档,就不需要加-z进行压缩:
END
到此,tar和zip命令就讲解完了哦。
下次说什么命令好呢?