linux下的解压命令详解
最近一直在坚持linux上的一切操作都使用命令来实现,其他的像复制粘贴,移动文件等都基本可以完全使用终端解决,但就是对于linux上众多的压缩包感到很头痛,一直不会使用命令来解决,今天在这里把压缩包相关操作整理一下。
tar
tar命令详解
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思
tar -tf aaa.tar.gz 在不解压的情况下查看压缩包的内容
查看
tar -tf aaa.tar.gz 在不解压的情况下查看压缩包的内容
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2tar –xZvf file.tar.Z //解压tar.Z
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
功能说明:.bz2文件的解压缩程序。
语 法:bunzip2 [-fkLsvV][.bz2压缩文件]
补充说明:bunzip2可解压缩.bz2格式的压缩文件。bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同。
参 数:
-f或--force 解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件。若要覆盖,请使用此参数。
-k或--keep 在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数。
-s或--small 降低程序执行时,内存的使用量。
-v或--verbose 解压缩文件时,显示详细的信息。
-l,--license,-V或--version 显示版本信息。
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
语法:
zip [参数] [压缩名] [要压缩的文件或目录...]
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$]
[-b <工作目录>]
[-ll]
[-n <字尾字符串>]
[-t <日期时间>]
[-<压缩效率>]
[压缩文件]
[文件...]
[-i <范本样式>]
[-x <范本样式>]
参数:
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压缩效率是一个介于1-9的数值。
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
用法:rar <命令> -<选项1> ….-<选项N> <操作文档> <文件…> <@文件列表…> <解压路径>
通常rar命令由一个主命令加若干选项(可选)构成,操作文档为操作施加的.rar文件对象,
文件或文件列表为对操作文档实现修饰的具体文件或目录(可选)。
------------------------------------------------------------------------
rar常用命令
a 添加文件到操作文档例:rar a test.rar file1.txt 若test.rar文件不存在,则打包file1.txt文件成test.rar
例:rar a test.rar file2.txt 若test.rar文件已经存在,则添加file2.txt文件到test.rar中
(这样test.rar中就有两个文件了)
注,如果操作文档中已有某文件的一份拷贝,则a命令更新该文件,对目录也可以进行操作
例:rar a test.rar dir1
c 对操作文档添加说明注释
rar c test.rar
(会出现Reading comment from stdin字样,然后输入一行或多行注释,以ctrl+d结束)
cf 添加文件注释,类似上面的c,不过这个是对压缩文档中每个文件进行注释
cw 将文档注释写入文件
例:rar cw test.rar comment.txt
d 从文档中删除文件
例:rar d test.rar file1.txt
e 将文件解压到当前目录
例:rar e test.rar
注:用e解压的话,不仅原来的file1.txt和file2.txt被解压到当前目录,就连dir1里面的所有文件
也被解压到当前目录下,不能保持压缩前的目录结构,如果想保持压缩前的目录结构,用x解压
k 锁定文档
例:rar k test.rar 锁定文档后,该文档就无法进行任何更新操作了
r 修复文档
例:rar r test.rar
当rar文件有问题时,可以尝试用该命令进行修复(鬼知道有多少用)
s 转换文档成自解压文档
例:rar s test.rar
会生成一个test.sfx的可执行文档,运行它的效果就相当于rar x test.rar,
适合于向没有rar的用户传输文件
t 检测文档
例:rar t test.rar
检测test.rar的完整性,一般压缩完大型文件准备传输前最好用这个命令来确保文件的正确性
x 带路径解压文档中内容到当前目录
例:rar x test.rar
这样解压的话,dir1就会保持原来的目录结构
以上就是rar的常用命令,一个rar操作只能有一个命令,而选项却可以有多个。
------------------------------------------------------------------------
rar选项有很多,在此无法一一说明,只示范经常使用的几个
cl 将文件名转换为小写
cu 将文件名转换为大写
例:rar a -cl test.rar FILe.txt
FILe.txt在添加进test.rar之后,变为file.txt
df 文档操作后删除源文件
例:rar a -df test.rar file1.txt file2.txt dir1
将file1.txt,file2.txt,dir1压缩到test.rar中之后,删除源文件
ed 不添加空目录
例:rar a -ed test.rar dir1
添加dir1到test.rar中时,不对空目录进行操作
rar e -ed test.rar
解压test.rar时,不生成空目录
k 锁定文件
例:rar a -k test.rar file1.txt
等价于rar a test.rar file1.txt
rar k test.rar
m<0..5> 设定压缩比等级(0-存储,3-默认,5-最大)
例:rar a -m0 test.rar dir1 dir2
将dir1,dir2打包存储到test.rar,不进行实质上的压缩(速度奇快,适合于对无甚可压的文件进行操作
比如avi,jpg等)
rar a -m5 test.rar *.txt *.bmp
将当前目录下的txt文件和bmp文件打包压缩到test.rar中,使用最大压缩比(最慢)
ms[ext;ext] 特定文件采用非压缩方式
例:rar a -m5 -ms avi;jpg;jpeg test.rar /home
将home目录下所有目录和文件归档到test.rar,采用最大压缩,但avi,jpg,jpeg文件不进行压缩
(只是打包进test.rar,因为这些文件即使用最大压缩也压不了多少,不如直接打包节省时间)
o+ 覆盖已有文件
o- 不覆盖已有文件
例:rar x -o- test.rar
解压test.rar文件,但是如果碰到以存在的文件则不覆盖
ol 将符号链接以链接文件保存,而不是普通文件
ow 保存或者恢复文件所有者的信息(username,group)
这两个是*nix系统特有的命令,很容易理解吧
------------------------------------------------------------------------
p[password] 设定密码
例:rar a test.rar *.txt -p prettygirl
压缩文件设定密码为prettygirl,解压时无密码无法进行操作
如果觉得明码密码太过暴露,可以使用
rar a test.rar *.txt -p
则rar程序会询问你要使用什么密码,不回显
s- 不使用固实压缩
注,固实压缩就是压缩后文档内容不可变更的压缩方式,这和lock不一样。因为使用普通压缩
要照顾以后的插入删除个别文件的需要,就要留下很多操作余地。而固实压缩则不可以对
其内容进行任何更新,所以压缩比是最大的。
sfx[name] 创建自解压文件,这和先用a进行压缩,再用s转换效果是一样的。
t 压缩完毕后进行完整性检验
例:rar a test.rar /home -t
压缩完毕后进行检验,如果有问题则报错。
ta<date> 仅对data日期后文件进行操作
tb<date> 仅对data日期前文件进行操作
注,date的格式为 YYYYMMDDHHMMSS 这样。
v<size>[k,b] 分卷压缩,每卷大小由后面的size指定
例:rar a -v15000k -m0 test xvid-fn.avi
对xvid-fn.avi进行打包存储,每卷大小15000k(这种格式在网上发布dvdrip时很流行)
生成的文件名为test.part1.rar,test.part2.rar….(rar 3.20版)
x<file> 排除特定的文件
例:rar x test.rar -x *.txt
解压test.rar中除*.txt以外的文档
x@<list> 同上,不过这次所有排除的文件放在list文件列表中
y 所有操作均回答yes
例如有时解压时每碰到相同文件就问是否覆盖(Y/N),加上-y就可以默认选择Yes,不再询问
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
.lha
-a或a:压缩文件,并加入到压缩文件内。
-a<0/1/2>/u 压缩文件时,采用不同的文件头。
-c或c:压缩文件,重新建构新的压缩文件后,再将其加入。
-d或d:从压缩文件内删除指定的文件。
-<a/c/u>d或<a/c/u>d:压缩文件,然后将其加入,重新建构,更新压缩文件或,删除原始文件,也就是把文件移到压缩文件中。
-f或f:强制执行lha命令,在解压时会直接覆盖已有的文件而不加以询问。
-<e/x>i或<e/x>i:解开压缩文件时,忽略保存在压缩文件内的文件路径,直接将其解压后存放在现行目录下或是指定的目录中。
-<a/u>o或<a/u>o:采用lharc兼容格式,将压缩后的文件加入,更新压缩文件。
-u<0/1/2>或u<0/1/2>:在文件压缩时采用不同的文件头,然后更新到压缩文件内。
-<e/x>w=<目的目录>或<e/x>w=<目的目录>:指定解压缩的目录。
-x或x:解开压缩文件。 -z或z:不压缩文件,直接把它加入,更新压缩文件。
-z或z:不压缩文件,直接把它加入,更新压缩文件
-<a/u>z或<a/u>z 不压缩文件,直接把它加入,更新压缩文件
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
.rpm
1.安装一个包
# rpm -ivh
# rpm -Uvh
# rpm -e
--force 即使覆盖属于其它包的文件也强迫安装 --nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安
装。
# rpm -q < rpm package name>
# rpm -qi < rpm package name>
# rpm -ql < rpm package name>
# rpm -qf
# rpm -qil < rpm package name>
# rpm -qa
# rpm -qilp < rpm package name>
2.升级一个包
3.移走一个包
4.安装参数
5.查询一个包是否被安装
6.得到被安装的包的信息
7.列出该包中有哪些文件
8.列出服务器上的一个文件属于哪一个RPM包
9.可综合好几个参数一起用
10.列出所有被安装的rpm package
11.列出一个未被安装进系统的RPM包文件中包含有哪些文件?
解包:rpm2cpio FileName.rpm | cpio -div
.deb
dpkg-deb命令是Debian Linux下的软件包管理工具,它可以对软件包执行打包和解包操作以及提供软件包信息
-b:创建debian软件包。
-c:显示软件包中的文件列表;
-e:将主控信息解压;
-f:把字段内容打印到标准输出;
-x:将软件包中的文件释放到指定目录下;
-X:将软件包中的文件释放到指定目录下,并显示释放文件的详细过程;
-w:显示软件包的信息;
-l:显示软件包的详细信息;
-R:提取控制信息和存档的清单文件;
解包:ar p FileName.deb data.tar.gz | tar zxf -
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
gzip 命令