linux压缩包解压命令tar.gz需分两步进行,下面是具体介绍:
创新互联建站主要从事网站设计制作、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务祁县,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
1、使用命令tar-zcvfmywork/打包压缩mywork目录。
2、使用命令tar-zxvfmywork.tar.gz 解压mywork.tar.gz,解压的文件只能放在当前目录。
以上就是小编今天的分享了,希望可以帮助到大家。
本文章基于thinkpadE15品牌、centos7系统撰写的。
7z文件类型属于一个压缩文件类型,在linux要通过命令可以将其解压出来,下面由我为大家整理了linux下解压7z文件命令的相关知识,希望对大家有所帮助。
一、linux解压7z文件命令详解
解压缩7z文件
7za x phpMyAdmin-3.3.8.1-all-languages.7z -r -o./
参数含义:
x 代表解压缩文件,并且是按原始目录树解压(还有个参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的文件夹下)
phpMyAdmin-3.3.8.1-all-languages.7z 是压缩文件,这里我用phpadmin做测试。这里默认使用当前目录下的phpMyAdmin-3.3.8.1-all-languages.7z
-r 表示递归解压缩所有的子文件夹
-o 是指定解压到的目录,-o后是没有空格的,直接接目录。这一点需要注意。
二、补充:linux压缩7z文件/文件夹命令
7za a -t7z -r Mytest.7z /opt/phpMyAdmin-3.3.8.1-all-languages/*
参数含义:
a 代表添加文件/文件夹到压缩包
-t 是指定压缩类型,这里定为7z,可不指定,因为7za默认压缩类型就是7z。
-r 表示递归所有的子文件夹
Mytest.7z 是压缩好后的压缩包名
/opt/phpMyAdmin-3.3.8.1-all-languages/*:是压缩目标。
注意:7za不仅仅支持.7z压缩格式,还支持.tar.bz2等压缩类型的。如上所述,用-t指定即可。
Linux下进行文件的解压、复制、移动应该是最常见的操作了。尤其是我们在项目中使用大量的数据集文件(比如机器学习)文件。然而使用这些命令时一不留神就会掉进坑里,这篇文章我们就来细数用Shell进行文件操作的这些坑。
Linux下压缩文件的常见扩展名包括 .gz , .tar , .tar.gz , .zip 等。这些压缩格式都能够跨平台(Windows/Mac/Linux)使用。下面我们以 .zip 文件为例子来讲解。我们已知一个文本文件压缩包 test.zip ,想把它解压,很简单,运行 unzip 命令即可:
如果我们想要将 test.txt 重新压缩呢?你可能情不自禁会执行 zip test.txt ,然后我们发现提示:
其实是传参数传错了,导致 zip 误把 test.txt 当成压缩后的文件名了,这当然不是合法的。我们看 zip 的参数构成:
[-b path] 是压缩后的 .zip 文件的路径, zipfile list 是待压缩的文件列表。于是,我们这样写即可成功压缩:
当然, zip 也支持将多个文件压缩:
此时我们发现再解压 test3.zip 会发现重新得到了两个原始文件:
zip 也支持对目录压缩,如我们尝试压缩 test 目录:
此时再解压 test4.zip 则会重新生成 test 目录:
不过, zip 是将输入的文件列表 分别 进行压缩的操作,即是对目录来进行压缩也是对目录内的所有文件one-by-one的操作。那我们需要将很多文件先打包成一个文件,然后再压缩呢?此时就要用到 tar 了。
很多人误解 tar 是个压缩命令,其实压缩命令是 gzip 、 xz 以及我们上文提到的 zip 这些。 tar 是个打包命令,只不过附带压缩与解压的功能。 tar 的选项多如牛毛,为了减轻大家的记忆负担,我们只介绍下面两个选项:
-c : 建立打包文件(可搭配 -v 将过程中打包的文件可视化);
-x :解包或解压缩的功能(可搭配 -C 在特定目录解压);
(其实还有表示通过gzip进行压缩/解压缩的 -z ,通过bzip2的支持进行压缩/解压缩的 -j ,通过xz的支持进行压缩解压缩的 -J 等,但我们这里统一用 .zip 示范,就省去这些参数了)
那么,我们只需要记住下面的命令即可:
压缩: tar -cv -f filename.zip 要被压缩的文件或目录名称
解压缩: tar -xv -f filename.zip -C 欲解压的目录(这个目录必须已经存在)
注意,压缩传参顺序是压缩后的.zip文件在前,压缩前的文件在后 ,别搞错了。(让人联想到gcc编译器,不过 gcc 传参时规定是 -o output_file.out 的形式来指定输出的可执行文件,就回避了这个顺序问题)
比如,我们要将 test 文件夹(该文件夹下有一个 test.txt 文件)压缩,可以运行如下命令:
然后将其解压到当前目录,可运行如下命令:
多个文件压缩:
然后将其解压到当前目录:
由上面所说, zip / unzip 和 tar 都是压缩什么解压出来就是什么,原来是目录就是目录,原来没目录不会帮你自动生成一个目录 ,但Linux或Mac系统的可视化压缩工具就不一样了(在Mac中被称为「归档实用工具」)。Mac中对目录压缩时压缩命令和 tar 命令是等效的,比如我们想用Mac自带的压缩工具压缩 test 文件夹:
会生成对应的归档文件:
再解压会得到同样的文件夹(会自动帮我们重命名),不会帮我们生成多余的目录:
这个文件夹内部才是我们需要的文件:
它会自动帮我们生成一个名为 归档.zip 的文件:
这个文件夹内部才是我们需要的文件:
这个文件夹内部才是我们需要的文件:
这在对大量文件操作时需要额外注意,否则会白白开销你一次拷贝文件的时间!
我们紧接着上面的情景。假设我们当前的目录为项目目录,而我们手滑使用了系统自带的可视化解压工具生成了一个多余的目录。我们接下来要把系统生成的多余的 归档 文件夹里的文件拷贝到当前目录,那么我们可以使用带 r 参数的 cp 命令:
这里 -r 参数表示递归复制命令,用于目录的递归复制。注意命令中的 归档/ 表示 归档 目录下的所有文件,意思和 归档/* 相同:
选项参数 -r 写成 -R 是等效的:
但如果直接传入参数 归档 ,则表示将这个目录整个地复制:
同一个目录下不可能有两个相同名称的子目录,这当然就会出错,当然我们可以将其复制到另外一个目录里:
你可能要问,加 r 和不加 r 有啥区别?如果不加 r ,则默认是跳过目录的,也就是说只能copy文件:
我们还是紧接着上面的场景。假定我们已经将 归档 文件夹中的 test.txt 、 test2.txt 成功拷贝到当前项目目录了。现在我们有了个新的需求:我们在项目目录中建了一个 data 子目录,现在需要将项目目录中的 test.txt 、 test2.txt 移动到 data 子目录中。这就需要如下命令:
注意,如果有多个源文件或目录,则最后一个目标文件(也就是这里的data)一定是目录 。当我们只移动一个文件时,就有潜在的二义性。这里因为 data 目录本身存在,我们移动 test.txt 到 data 目录还能正常执行:
但是如果data目录不存在,就会将 mv 解释为重命名的意思,比如如果我们将 data 目录删除再执行:
此时就等效于把 test.txt 更名为 data 文件:
可以看出,第一个字母是 - ,也就意味着 data 是普通文件,不是目录(是目录的话第一个字母是 d )。
因此,使用 mv 语句时要格外小心,因为它既有移动到目录的作用,也有重命名的作用,一不注意就可能出错!
有移动到目录的作用,也有重命名的作用,一不注意就可能出错!
就可能出错!
JAR包是Java中所特有一种压缩文档,我们可以通过相关命令解压jar包,下面由我为大家整理了linux下解压jar包命令的相关知识,希望对大家有所帮助。
一、linux解压jar包命令——jar命令详解
jar命令选项:
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
其中{ctxu}这四个选项必须选其一。[v f m e 0 M i ]是可选选项,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
二、linux解压jar包命令——jar使用范例
(1)创建jar包
$ jar cf hello.jar hello 利用test目录生成hello.jar包,如hello.jar存在,则覆盖
(2)创建并显示打包过程
$ jar cvf hello.jar hello 利用hello目录创建hello.jar包,并显示创建过程
例:E:\jar cvf hello.jar hello
标明清单(manifest)
增加:hello/(读入= 0) (写出= 0)(存储了 0%)
增加:hello/TestServlet2.class(读入= 1497) (写出= 818)(压缩了 45%)
增加:hello/HelloServlet.class(读入= 1344) (写出= 736)(压缩了 45%)
增加:hello/TestServlet1.class(读入= 2037) (写出= 1118)(压缩了 45%)
(3)显示jar包
$ jar tvf hello.jar 查看hello.jar包的内容
指定的jar包必须真实存在,否则会发生FileNoutFoundException。
(4)解压jar包
$ jar xvf hello.jar 解压hello.jar至当前目录
(5)jar中添加文件
$ jar uf hello.jar HelloWorld.java 将HelloWorld.java添加到hello.jar包中
(6)创建不压缩内容jar包
$ jar cvf0 hello.jar *.class 利用当前目录中所有的.class文件生成一个不压缩jar包
(7)创建带manifest.mf文件的jar包
$ jar cvfm hello.jar manifest.mf hello
创建的jar包多了一个META-INF目录,META-INF止录下多了一个manifest.mf文件,至于manifest.mf的作用,后面会提到.
(8)忽略manifest.mf文件
$ jar cvfM hello.jar hello 生成的jar包中不包括META-INF目录及manifest.mf文件
(9)加-C应用:
$ jar cvfm hello.jar mymanifest.mf -C hello/
表示在切换到hello目录下然后再执行jar命令
(10)-i为jar文件生成索引列表
当一个jar包中的内容很好的时候,你可以给它生成一个索引文件,这样看起来很省事。
$ jar i hello.jar
执行完这条命令后,它会在hello.jar包的META-INF文件夹下生成一个名为INDEX.LIST的索引文件,
它会生成一个列表,最上边为jar包名。
(11)导出解压列表
jar tvf hello.jar hello.txt
如果你想查看解压一个jar的详细过程,而这个jar包又很大,屏幕信息会一闪而过,
这时你可以把列表输出到一个文件中,慢慢欣赏!
(12)jar -cvf hello.jar hello/*
例如原目录结构如下:
hello
|---com
|---org
你本想只把com目录和org目录打包,而这时jar命令会连同hello目洋也一块打包进。
这点大家要注意。jar命令生成的压缩文件会包含它后边出的目录。我们应该进入到hello目录再执行jar命令。
注意:manifest.mf这个文件名,用户可以任指定,但jar命令只认识Manifest.mf,它会对用户指定的文件名进行相应在的转换,这不需用户担心。
三、linux解压jar包命令——JAR命令使用技巧
(1) jar创建压ZIP文件
jar cvfM TestZIP.jar test 加M参数为了不生成META-INF相关内容
然后将TestZIP.jar改为TestZIP.zip就可以,是不是很简单....
(2) 使用WinRAR解压.jar文件
上边我们已经说过了,说JAR文件是一种特殊的压缩文件,所以它当然可以用我们常用的一些解压缩工具来解了,
至于怎么解,这就不用我说了吧。
(3) 用WinRAR生成.jar文件
我们已经说过JAR包与ZIP包主要区别就是JAR包中多一个META-INF的目录,
META-INF目录下有一个manifest.mf文件,我们只要建立好相关的目录一压缩就可以了。
目录的结构如下:
TestJar
|--META-INF
|--manifest.mf
|--相关的类文件
注意:还应该在manifest.mf填写内容,不会写?照着一个已有的抄不就行了