- 前情
因为公司没有网,使用jar包运行项目,稍微改下java文件就需要传整个包到服务器,jar包较大流量不够用的,就在服务器解压jar包只修改需要修改的文件再压缩回去即可。 - 命令
unzip myapp.jar -d myapp
cd myapp
# 这里修改文件,之后在myapp目录下运行命令
jar cvfm0 myapp.jar META-INF/MANIFEST.MF .
#之后把文件传到原来路径下重新启动即可
mv myapp.jar ..
- zip命令详解
(1) zip参数
参数 | 说明 |
---|---|
-d | 从压缩文件内删除指定的文件。 |
-f | 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 |
-j | 只保存文件名称及其内容,而不存放任何目录名称。 |
-r | 递归处理,将指定目录下的所有文件和子目录一并处理。 |
-u | 更换较新的文件到压缩文件内。 |
-v | 显示指令执行过程或显示版本信息。 |
-y | 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。- <压缩效率> 压缩效率是一个介于1-9的数值。 |
实例:
zip -r test.zip test/ #打包test目录下的文件
zip -rj test.zip test/ #打包test目录下文件,且压缩包不带test目录
(2) unzip参数
参数 | 说明 |
---|---|
-l | 显示压缩文件内所包含的文件 |
-j | 只保存文件名称及其内容,而不存放任何目录名称。 |
-o | 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该 |
-v | 显示指令执行过程或显示版本信息。 |
-d | 指定解压目录,目录不存在会创建 |
查看压缩包中的文件信息
unzip -l test.zip #可以看到压缩包中的文件名,日期等信息
unzip -v test.zip #查看更多信息,例如crc校验信息等
解压包中指定的文件
如果不知道需要解压的文件名,可先查看包中的文件,然后使用下面的方法:
unzip -o test.zip "1.log" -d dir #解压包中的1.log文件到dir目录
unzip -o tet.zip "*.log" -d dir #解压包中所有的log文件
解压时去掉目录结构
压缩包中有多层目录结构,普通解压仍然会保留目录结构,如果只想要压缩包中的文件,可以使用-j参数:
zip -oj test.zip -d ./temp
解压jar包
jar包是java归档包,但同样可用unzip解压查看里面的文件:
unzip -o java.jar -d dir
- 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命令 |