免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 一生有你llx
打印 上一主题 下一主题

[系统管理] Linux基础命令 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
71 [报告]
发表于 2018-12-13 07:32 |只看该作者
bzip2
      使用Burrows-Wheeler块排序文本压缩算法,将文件进行压缩,压缩比率比一般算法高一些。bzip2要求命令行标志附带一个文件名列表。每个文件都被自己的压缩版本替换,名称为“original_name.bz2”。每个压缩文件与相应的原始文件具有相同的修改日期、权限和所有权(如果可能的话),因此可以在解压缩时正确地还原这些属性。
     默认情况下,bzip2和bunzip2不会覆盖现有文件。如果希望发生这种情况,请指定“-f”标志。如果没有指定文件名,bzip2将从标准输入压缩到标准输出。在这种情况下,bzip2拒绝将压缩输出写入终端,因为这将是完全不可理解的,因此毫无意义。
     bunzip2(或bzip2 -d)解压缩所有指定的文件。未由bzip2创建的文件将被检测和忽略,并发出警告。bzip2试图从压缩文件中猜测解压缩文件的文件名,如下所示:
filename.bz2    becomes  filename
filename.bz     becomes  filename
filename.tbz2   becomes  filename.tar
filename.tbz    becomes  filename.tar
anyothername    becomes  anyothername.out
     如果文件没有以.bz2、.bz、.tbz2或.tbz中的某个结尾,bzip2抱怨它无法猜测原始文件的名称,并使用原始名称并附加.out。与压缩一样,不提供文件名会导致从标准输入到标准输出的解压缩。bunzip2将正确解压缩一个文件,该文件是两个或多个压缩文件的级联。其结果是连接相应的未压缩文件。还支持连接压缩文件的完整性测试(-t)。
     还可以通过赋予“-c”标志将文件压缩或解压缩到标准输出。可以像这样压缩和解压缩多个文件。结果输出按顺序输入到stdout。以这种方式压缩多个文件会生成包含多个压缩文件表示的流。这样的流只能通过bzip2版本0.9.0或更高版本正确地解压缩。在解压缩流中的第一个文件后,bzip2的早期版本将停止。
     bzcat(或bzip2 -dc)将所有指定的文件解压到标准输出。bzip2将按照这个顺序从环境变量BZIP2和BZIP读取参数,并在从命令行读取任何参数之前对它们进行处理。这为提供默认参数提供了一种方便的方法。
     压缩总是被执行,即使压缩文件比原始文件稍大。小于100个字节的文件往往会变大,因为压缩机制在50个字节的范围内有一个恒定的开销。随机数据(包括大多数文件压缩器的输出)编码大约为每字节8.05位,扩展幅度约为0.5%。
     bzip2使用32位crc来确保解压缩版本的文件与原始文件相同。这可以防止压缩数据的损坏,防止bzip2中未被检测到的bug(希望非常不可能)。数据损坏的可能性是微乎其微的,大约每处理40亿个文件就有一个机会。但是,请注意,检查是在解压时发生的,因此它只能告诉您某些事情是错误的。它无法帮助您恢复原始未压缩数据。您可以使用bzip2recover尝试从损坏的文件中恢复数据。
     返回值:0表示正常退出,1表示环境问题(文件未找到,无效标志,I/O错误,&c),2表示损坏的压缩文件,3表示内部一致性错误(例如,bug),导致bzip2恐慌。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     bzip2 [ -cdfkqstvzVL123456789 ]  [ filenames ...  ]

2、选项列表
选项
说明
-h | --help
帮助信息
-V | --version
显示命令版本信息
-c | --stdout
将解压或者解压文件写到标准输出
-d | --decompress
解压
--z | -compress
对-d的补充:强制压缩,而不管调用名称如何
-t | --test
检查指定文件的完整性,但不要解压缩它们。这确实执行了一次尝试解压缩,并丢弃了结果。
-f | --force
强制执行
-k | --keep
解压之后,保留源文件
-s | --small
减少内存使用,用于压缩、解压缩和测试。使用修改的算法对文件进行解压缩和测试,该算法每个块字节只需要2.5字节。这意味着任何文件都可以在2300 k内存中解压缩,尽管速度是正常速度的一半。
在压缩期间,-s选择200 k的块大小,这将内存的使用限制在大约相同的数字上,而代价是压缩比。简而言之,如果你的机器内存不足(8兆字节或更少),那就用-s来做所有的事情。请参阅下面的内存管理。
-L | --license | -V | --version
列出gzip的许可证
-q | --quite
跳过所有的警告信息
-v | --verbose
显示详细执行过程
-1 ~-9
指定压缩比率,将块大小设为100k,200k,900K。解压时无效,“-1”等价于“--fast”,“-9”等价于“--best“。
-v | --verbose
显示执行过程
--
将所有后续参数视为文件名,即使它们以‘-’开头。这样您就可以处理以‘-’开头的文件,例如:“bzip2  --  -myfilename”。
--repetitive-fast
--repetitive-best
这些标志在0.9.5及以上版本中是多余的。它们对早期版本中排序算法的行为提供了一些粗略的控制,这有时是有用的。0.9.5及以上版本的改进算法使这些标志不相关

3、内存管理
     bzip2以块压缩大型文件。块大小既影响压缩比,也影响压缩和解压缩所需的内存量。标志-1到-9指定块大小分别为100000字节至900000字节(默认值)。解压缩时,从压缩文件的头读取用于压缩的块大小,然后为其分配足够的内存来解压缩文件。由于块大小存储在压缩文件中,因此在解压缩过程中,标志-1至-9与此无关,因而被忽略。压缩和解压缩需求(以字节为单位)可估计为
Compression:   400k + ( 8 x block size )
Decompression: 100k + ( 4 x block size ), or 100k + ( 2.5 x block size )
     更大的区块大小给出迅速递减的边际回报。大部分压缩来自块大小的前两三百k,在小型机器上使用bzip 2时要记住这一点。同样重要的是要认识到,解压缩内存需求是通过选择块大小在压缩时间设置的。
     对于默认的900k块大小压缩的文件,bunzip2需要大约3700千字节来解压缩。为了支持对4MB机器上的任何文件进行解压缩,bunzip2可以选择使用大约一半的内存(约2300千字节)来解压缩。解压缩速度也减半,因此您应该只在必要时使用此选项。相关的标志是-s。通常,尝试并使用允许的最大块大小的内存约束,因为这样可以最大限度地实现压缩。压缩和解压缩速度几乎不受块大小的影响。
     另一个要点适用于适合单个块的文件,意味着大多数使用大块大小的文件。接触到的实际内存量与文件大小成正比,因为文件小于块。例如,使用标志-9压缩一个文件的长度为20000字节,将导致压缩器分配大约7600k的内存,但只会触及400k+20000*8=56万字节的内存。类似地,解压缩程序将分配3700k,但只会触及100k+20000*4=180 k字节。
     下面是一个表,它总结了不同块大小的最大内存使用量
     Compress     Decompress       Decompress       Corpus
     Flag             usage      usage       -s usage     Size
     -1               1200k       500k         350k      914704
     -2               2000k       900k         600k      877703
     -3               2800k      1300k         850k      860338
     -4               3600k      1700k        1100k      846899
     -5               4400k      2100k        1350k      845160
     -6               5200k      2500k        1600k     838626
     -7               6100k      2900k        1850k      834096
     -8               6800k      3300k        2100k      828642
     -9               7600k      3700k        2350k      828642

4、从损坏的文件中恢复数据
     bzip2以块的形式压缩文件,通常长达900千字节。每个块都是独立处理的。如果媒体或传输错误导致multi-block .bz2文件损坏,则可以从文件中未损坏的块恢复数据。每个块的压缩表示由一个48位模式分隔,这使得以合理的确定性找到块边界成为可能。每个块还带有自己的32位CRC,因此损坏的块可以与未损坏的块区分开来。
     bzip2Recovery是一个简单的程序,其目的是搜索“.bz2”文件中的块,并将每个块写入自己的“.bz2”文件中。然后可以使用“bzip2  –t”测试结果文件的完整性,并解压缩未损坏的文件。
     bzip2Recovery接受一个参数,即受损文件的名称,并写入一些文件“rec00001file.bz2”、“rec00002file.bz2”等,其中包含提取的块。输出文件名的设计使得在随后的处理中使用通配符。例如,“bzip2  -dc  rec*file.bz2  >  recovered_data”按正确的顺序处理文件。
     处理大型bz2文件时,bzip2恢复应该是最有用的,因为这些文件将包含许多块。在损坏的单块文件上使用它显然是徒劳无功的,因为损坏的块无法恢复。如果希望通过媒体或传输错误最大限度地减少任何潜在的数据丢失,可以考虑使用较小的块大小进行压缩。

5、执行情况说明
     压缩的排序阶段收集文件中类似的字符串。正因为如此,包含大量重复符号的文件,如“aabaabaabaab.”(重复几百次)可能比正常压缩速度慢。在这方面,0.9.5及以上的版本比以前的版本要好得多。最坏压缩时间与平均压缩时间之比在10:1左右.对于以前的版本,这个数字更像是100:1。如果需要,可以使用-vvvv选项来非常详细地监视进度。减压速度不受这些现象的影响。
     bzip 2通常分配几兆字节的内存进行操作,然后以相当随机的方式对其进行充电。这意味着压缩和解压缩的性能在很大程度上取决于您的机器能够为缓存丢失提供服务的速度。正因为如此,通过对代码进行小幅度的更改以降低漏出率,从而提供了不成比例的大幅度性能改进。我认为bzip 2在具有非常大缓存的机器上表现最好。
7、实例
     1)压缩文件
[root@localhost weijie]# bzip2 1.c                   //压缩1.c,源文件会被删除
[root@localhost weijie]# ls
11.c  1.c.bz2  2.c  3.c  4.c  5.c  6.c~  bak
[root@localhost weijie]# bzip2 -c 2.c > res.bz2     //1.c压缩到res,源文件不动
[root@localhost weijie]# ls
11.c  1.c.bz2  2.c  3.c  4.c  5.c  6.c~  bak  res.bz2
     2)解压
[root@localhost weijie]# bzip2 -d res.bz2            //解压
[root@localhost weijie]# ls
11.c  1.c.bz2 2.c  3.c  4.c 5.c  6.c~  bak res
     3)将两个文件压缩到一个文件中
[root@localhost weijie]# cat 1.c 2.c                   //输出两个文件的内容
hello world,
i am david.
i love linux,
love code.
123
23
212
[root@localhost weijie]# bzip2 –c 1.c > foo.gz        //1.c压缩到foo
[root@localhost weijie]# bzip2 –c 2.c >> foo.gz       //2.c压缩到foo
[root@localhost weijie]# bgzip2 -d foo.gz              //解压foo
[root@localhost weijie]# cat foo                        //显示foo的内容
hello world,
i am david.
i love linux,
love code.
123
23
212



论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
72 [报告]
发表于 2018-12-14 08:48 |只看该作者
cpio
      从归档中复制文件,或者复制文件到归档中。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
     Cpio命令有三种工作模式:
     1)copy-out mode,cpio指令将文件复制到归档。它读取标准输入上的文件名列表(每行一个),将归档包写到标准输出。
     2)copy-in mode,cpio指令从归档中复制文件,从标准输入读取归档包。
     3)cpio-pass mode,从目录树复制文件到另一个目录,它从标准输入中读取要复制的文件列表。

1、语法
     cpio -o namelist  > archive
     cpio  -i  <  archive
     cpio  -p  dst-dir < namelist

2、选项列表
选项
说明
-? | --help
帮助信息
--version
显示命令版本信息
主操作模式

-i | --extract
从包中提取文件,copy-in模式
-o | --create
创建包,copy-out模式
-p | --pass-through
运行copy-pass模式
-t | --list
打印输入内容列表
-l | --list
对于每一个压缩的文件,列出压缩文件大小、解压大小、压缩比列、压缩前的文件名字
应用在所有模式的选项

-B
设置IO块的大小为5120字节
-c
使用老式跨平台的归档格式
-f
仅拷贝不匹配任意给定模式的文件
-F
用文件名代替标准输入和输出
-n | --numeric-uid-gid
在内容列表的详细信息中显示uid和gid
--quite
不打印以拷贝的块数
-v | --verbose
详细信息
-V | -dot
每处理一个文件就打印一个“.”
应用于copy-in的徐昂想

-b | --swap

-r | --rename
交互式重命名
-E
把指定文件的内容当做匹配字符串
应用于copy-out的选项

-A | --append
追加到文档的结尾
-O
使用包文件名,而不是标准输入输出
应用于copy-pass的选项

-l | --link
在执行时尽可能创建链接,而不是复制文件
应用于copy-in和copy-out

--absolute-filenames
文件名不出去文件系统前缀
--no-absolute-filenames
当前目录创建所有文件
应用于copy-out和copy-pass

-0 | --null
输入文件名以null字符结尾
-a | --reset-access-time
文件读取后,还原文件的访问时间
-I
从文件读入
-R | --owner
设置所有文件的组合用户信息
应用于copy-in和copy-pass

-d
必要时创建目录
-m
创建文件是,保留文件修改时间属性
-u
无条件覆盖

3、例子代码
% ls | cpio -ov > directory.cpio
归档当前目录下的内容,并且制定输出文件
% find . -print -depth | cpio -ov > tree.cpio
存档整个目录树,find命令可以将文件列表提供给cpio。这将获取当前目录中的所有文件,以及下面的目录,并将它们放置在归档目录tree.cpio中
% cpio -iv < directory.cpio
这将检索存档在文件directory.cpio中的文件,并将它们放在当前目录中
% cpio -idv < tree.cpio
这将获取存档tree.cpio的内容,并将其解压缩到当前目录。
% find . -depth -print0 | cpio --null -pvd new-dir
将当前目录的文件和子目录复制到一个名为new-dir的新目录中

4、实例
1)将当前目录归档
[root@localhost weijie]# ls | cpio -o > mybak           //ls的输出定向到cpio,然后归档
1 块
[root@localhost weijie]# ls
11.c  1.c  2.c 3.c  4.c  5.c 6.c  mybak
2)从归档中提取文件
[root@localhost weijie]# cpio -i < mybak                   //从归档中提取
cpio: 未创建 11.c:已有更新或同样新的版本存在
cpio: 未创建 5.c:已有更新或同样新的版本存在
cpio: 未创建 6.c:已有更新或同样新的版本存在
cpio: 未创建 mybak:已有更新或同样新的版本存在
1 块
[root@localhost weijie]# ls
11.c  1.c  2.c  3.c  4.c  5.c  6.c  mybak
3)拷贝文件
[root@localhost weijie]# cat list.c
1.c
2.c
3.c
[root@localhost weijie]# cpio -p bak/ < list.c          //list.c中的内容当做文件列表,然后拷贝到bak目录
cpio: 忽略空行
1 块
[root@localhost weijie]# ls bak/
1.c  2.c  3.c


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
73 [报告]
发表于 2018-12-15 09:13 |只看该作者
gzexe
      压缩可执行文件,在执行程序的时候可以自动实现解压。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
      gzexe file

2、选项列表
选项
说明
--help
帮助信息
--version
显示命令版本信息
-d
解压

3、实例
1)压缩ls指令
[root@localhost weijie]# gzexe /bin/ls                 //压缩ls指令,原来的指令文件变为ls~
/bin/ls:   56.0%
[root@localhost weijie]# ls -l /bin/ls*                //压缩后的命令占用更少的磁盘,而且还可以执行
-rwxr-xr-x  1 root root  53198 9月  19 17:55 /bin/ls
-rwxr-xr-x  1 root root 118932 11月 22 2013 /bin/ls~
2)解压ls指令
[root@localhost weijie]# gzexe -d /bin/ls              //解压
[root@localhost weijie]# ls -l /bin/ls*                //解压之后,原来的压缩包变为ls~
-rwxr-xr-x  1 root root 118932 9月  19 17:58 /bin/ls
-rwxr-xr-x  1 root root  53198 9月  19 17:55 /bin/ls~


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
74 [报告]
发表于 2018-12-17 08:14 |只看该作者
gzip
     gzip通过Lempel-ziv算法来压缩文件,压缩的时候保留每个文件的所有者、权限、修改时间。对于符号链接,gzip将会忽略它。
     如果压缩的文件名对其文件系统来说太长,则gzip将截断它。Gzip试图只截断文件名中超过3个字符的部分。(部分由点分隔。)如果名称仅由小部件组成,最长的部分将被截断。例如,如果文件名限制为14个字符,则“gzip.msdos.exe”压缩为“gzi.msd.exe.gz”。在没有文件名长度限制的系统中,名称不会被截断。
     默认情况下,gzip将原始文件名和时间戳保存在压缩文件中。这些在使用“-N”选项解压缩文件时使用。当压缩文件名被截断或文件传输后没有保留时间戳时,这是非常有用的。压缩文件可以使用“gzip –d”或“gunzip”或“zcat”恢复到它们的原始形式。如果保存在压缩文件中的原始名称不适合其文件系统,则从原始文件中构造新名称以使其合法。
     gunzip在其命令行中获取一个文件列表,并替换其名称以.gz、-z、-z、_z或.z结尾的每个文件,该文件以正确的魔术号开头,文件的未压缩文件没有原来的扩展名。gunzip还将特殊的扩展名.tgz和.taz分别识别为.tar.gz和.tar.z的缩写。压缩时,gzip在必要时使用.tgz扩展名,而不是截断扩展名为.tar的文件。
     gunzip目前可以解压缩由gzip,zip,compress-H或Pack创建的文件.输入格式的检测是自动的。当使用前两种格式时,gunzip检查32位CRC。对于包,枪拉链检查未压缩长度。标准压缩格式的设计不是为了允许一致性检查。然而,gunzip有时能够检测到一个坏的.z文件。如果在解压缩.z文件时出现错误,请不要仅仅因为标准解压缩不抱怨而认为.Z文件是正确的。这通常意味着标准解压缩不检查其输入,并愉快地生成垃圾输出。上海合作组织压缩-H格式(lzh压缩方法)不包括一个CRC,但也允许一些一致性检查。
     由zip创建的文件只有在使用“通缩”方法压缩单个成员的情况下才能被gzip解压缩。此特性仅用于帮助将tar.zip文件转换为tar.gz格式。要使用单个成员提取zip文件,可以使用诸如“gunzip  <  foo.zip”或“gunzip  –S  .zip  foo.zip”之类的命令。要提取包含多个成员的zip文件,请使用解压缩而不是gunzip。
     Zcat和“gunzip  –c”是一样的。(在某些系统上,可以将zcat安装为gzcat,以保留原始链接以进行压缩。)zcat解压缩命令行上的文件列表或其标准输入,并将未压缩的数据写入标准输出。无论是否有.gz后缀,zcat都会解压缩具有正确魔术号的文件。
     Gzip使用用于zip和PKZIP的Lempel-Ziv算法。获得的压缩量取决于输入的大小和常用子字符串的分布。通常,像源代码或英语这样的文本会减少60-70%.压缩通常比LZW(用于压缩)、Huffman编码(用于Pack)或自适应Huffman编码(紧凑)要好得多。
     压缩总是被执行,即使压缩文件比原始文件稍大。最坏的情况是gzip文件头的几个字节,加上每32K块5个字节,或者大文件的扩展率为0.015%。注意,使用过的磁盘块的实际数量几乎从未增加。gzip在压缩或解压缩时保留文件的模式、所有权和时间戳。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
     gzip [ -acdfhlLnNrtvV19 ]  [-S suffix]  [ name ... ]

2、选项列表
选项
说明
-h | --help
帮助信息
-V | --version
显示命令版本信息
-a | --ascii
文本模式,只适用于某些系统
-c | --stdout | --to-stdout
将解压文件写到标准输出,源文件不变。如果有多个输入文件,则输出由一系列独立压缩的成员组成。为了获得更好的压缩,在压缩所有输入文件之前先将它们连接起来。
-d | --decompress | --uncompress
解压
-f | --force
强制执行
-l | --list
对于每一个压缩的文件,列出压缩文件大小、解压大小、压缩比列、压缩前的文件名字
-L | --license
列出gzip的许可证
-n | --no-name
压缩文件的时候,不保留原始文件名字和时间属性
-N | --name
压缩的时候,保留原始文件和时间属性
-q | --quite
跳过所有的警告信息
-r | --recursive
递归压缩子目录
-S |.suf | --suffix | .suf
指定压缩文件后缀。压缩时,使用后缀.suf代替.gz。可以提供任何非空后缀,但应避免使用.z和.gz以外的后缀,以避免文件传输到其他系统时出现混淆。
-t | --test
测试
-v | --verbose
显示执行过程
-num | --fast | --best
使用指定的数字num调整压缩速度,其中-1或--fast表示最快的压缩方法(较小的压缩)和-9或--best表示最慢的压缩方法(最佳压缩)。默认的压缩级别是-6(也就是说,以牺牲速度为代价倾向于高压缩)。

3、环境变量
     环境变量GZIP可以保存gzip的一组默认选项。这些选项首先被解释,可以被显式命令行参数覆盖。例如
for sh:    GZIP="-8v --name"; export GZIP
for csh:   setenv GZIP "-8v --name"
for MSDOS: set GZIP=-8v --name
     在VAX/VMS上,环境变量的名称为GZIP_OPT,以避免与用于调用程序的符号设置冲突。

4、诊断信息
     退出状态通常为0;如果发生错误,退出状态为1。如果发生警告,退出状态为2。
Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
在命令行上指定了无效选项
file: not in gzip format
指定给gunzip的文件尚未压缩。
file: Corrupt input. Use zcat to recover some data.
压缩文件已损坏。
file: compressed with xx bits, can only handle yy bits
用gzip重新压缩文件,压缩更好,内存更少。
file: already has .gz suffix -- no change
假定该文件已被压缩。重命名该文件,然后再试一次。
file already exists; do you wish to overwrite (y or n)?
如果希望替换输出文件,请响应“y”;如果不希望替换输出文件,则响应“n”。
gunzip: corrupt input
检测到SIGSEGV违规,这通常意味着输入文件已损坏。
xx.x% Percentage of the input saved by compression.
只与-v和-l有关。
-- not a regular file or directory: ignored
当输入文件不是常规文件或目录(例如符号链接、套接字、FIFO、设备文件)时,它将保持不变。
-- has xx other links: unchanged
输入文件有链接;它保持不变。有关更多信息,请参见ln(1)。使用-f标志强制压缩多链接文件。

5、一些先进用法
     可以连接多个压缩文件。在这种情况下,gunzip将立即提取所有成员。例如:
gzip -c file1  > foo.gz
gzip -c file2 >> foo.gz
gunzip -c foo
上面的代码等价于
cat file1 file2
     如果.gz文件的一个成员被损坏,其他成员仍然可以恢复(如果损坏的成员被移除)。但是,您可以通过一次压缩所有成员来获得更好的压缩。
cat file1 file2 | gzip > foo.gz
上面的代码比下面的更好
gzip -c file1 file2 > foo.gz
     如果您想要重新压缩连接的文件以获得更好的压缩,可以使用
gzip -cd old.gz | gzip > new.gz
     如果一个压缩文件由多个成员组成,则--list选项报告的未压缩大小和CRC仅适用于最后一个成员。如果需要所有成员的未压缩大小,可以使用
gzip -cd file.gz | wc -c
      如果希望创建一个包含多个成员的单个归档文件,以便以后可以独立提取成员,请使用一个归档程序(如tar或zip)。GNUtar支持-z选项来透明地调用gzip。gzip是作为tar的补充,而不是替代。

6、实例
1)压缩文件
[root@localhost weijie]# gzip 1.c              //压缩
[root@localhost weijie]# ls                     //压缩之后,源文件被删除了
11.c  1.c.gz  2.c  3.c  4.c  5.c  6.c  foo
2)解压
[root@localhost weijie]# gzip -ld 1.c.gz       //解压,并显示详细过程
         compressed        uncompressed  ratio uncompressed_name
                 70                  53   9.4% 1.c
3)将两个文件压缩到一个文件中
[root@localhost weijie]# cat 1.c 2.c                   //输出两个文件的内容
hello world,
i am david.
i love linux,
love code.
123
23
212
[root@localhost weijie]# gzip –c 1.c > foo.gz        //1.c压缩到foo
[root@localhost weijie]# gzip –c 2.c >> foo.gz       //2.c压缩到foo
[root@localhost weijie]# gzip -d foo.gz               //解压foo
[root@localhost weijie]# cat foo                       //显示foo的内容
hello world,
i am david.
i love linux,
love code.
123
23
212




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
75 [报告]
发表于 2018-12-18 07:31 |只看该作者
zip
      zip是一种最通用的文件压缩方式,使用于unix、msdos、windows、OS等系统。如果在编译zip时包含bzip 2库,zip现在也支持bzip 2压缩。当将大于4GB的文件添加到存档中时,zip会自动使用Zip 64扩展名,包含Zip 64条目的归档将被更新(如果结果的归档仍然需要Zip 64),归档的大小将超过4GB,或者当归档中的条目数超过64K时。Zip 64也用于从标准输入中传输的档案,因为事先不知道这些档案的大小,但是选项fz可以用来强制zip创建与PKZIP 2兼容的档案(只要不需要Zip 64扩展)。必须使用PKZIP4.5兼容解压缩,例如解压缩6.0或更高版本,才能使用Zip 64扩展名提取文件。
     zip程序将一个或多个压缩文件与有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起放入一个压缩存档中。可以使用一个命令将整个目录结构打包到zip存档中。对于文本文件来说,压缩比为2:1和3:1是常见的。zip只有一种压缩方法(通缩),并且可以在不压缩的情况下存储文件。(如果添加了bzip 2支持,zip也可以使用bzip 2压缩,但这些条目需要一个合理的现代解压缩来解压缩。当选择bzip 2压缩时,它将通货紧缩替换为默认方法。)zip会自动为每个要压缩的文件选择更好的两个文件(通缩或存储,如果选择bzip2,则选择bzip2或Store)。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     zip [选项]  zipfile list

2、选项列表
选项
说明
-? | -h | --help
帮助信息
-h2 | --more-help
显示扩展帮助,包括更多关于命令行格式、模式匹配和更模糊的选项。
-V | --version
显示命令版本信息
-a | --ascii
将系统使用的EBCDIC文件转换为ascii
-A | --adjust-sfx
调整自解压可执行档案。自解压缩的可执行存档是通过将SFX存根放在现有存档的前面创建的。-A选项告诉zip调整存储在归档中的条目偏移量,以考虑到这些“序言”数据。
-b path  |  --temp-path path
为临时zip归档使用指定的路径
-B | --binary
使用二进制格式,默认是文本格式
-c | --entry-comments
给被压缩的文件加上注释信息
-d | --delete
将指定的文件从压缩文件中删除
-db | --display-bytes
显示正在运行的字节计数,显示压缩的字节和要运行的字节。
-dc | --display-counts
显示已压缩的条目的运行计数和要运行的条目
-dd | --display-dots
在每个条目被拉链时显示点(除了在具有自己的进度指示器的端口上)。见下面的设置点大小-DS。默认情况下,每处理10 MB的输入文件就有一个点。-v选项还显示点(以前的速率比这个高得多,但现在-v也默认为10 MB),这个速率也是由-ds控制的。
-dg | --display-globaldots
显示存档的进度点,而不是为每个文件显示进度点。
-ds size | --dot-size size
设置为显示的每个点处理的输入文件的数量。尺寸为nm格式,其中n是一个数字,m是一个乘数。目前m可以是k(KB),m(MB),g(GB),或者t(TB),所以如果n是100,m是k,那么大小将是100 k,即100 KB。默认值为10 MB。
-du | --display-usize
显示每个条目的未压缩大小。
-dv | --display-volume
显示正在读取的每个条目的卷(磁盘)号,如果读取现有存档,并将其写入
-D | --no-dir-entries
不要在zip存档中为目录创建条目。
-DF | --difference-archive
创建一个包含自原始存档创建以来所有新的和已更改的文件的归档文件。
-e | --encrypt
压缩文件加密
-f | --freshen
替代压缩文件中的旧文件,如果文件不存在,那么不会追加文件
-F | --fix | -FF | --fixfix
尝试修复已经损坏的压缩文件
-FI | --fifo
通常zip会跳过读取遇到的任何FIFO(命名管道),因为如果FIFO没有被喂入,zip就会挂起。
-FS | --filesync
将存档的内容与操作系统上的文件同步
-g | --grow
将文件追加到已经存在的压缩文件结尾
-i | --include
仅包含指定的文件
-j | --junk-paths
压缩的时候,忽略文件名中的路径,只保存文件名和内容
-J | --junk-sfx
从存档中删除任何预置的数据
-i | --include
只包含指定的文件
-la | --log-append
附加到现有日志文件。默认值是覆盖
-lf | --logfile-path
在给定路径上打开日志文件。默认情况下,该位置的任何现有文件都会被覆盖
-li | --log-info
在日志中包含信息消息,例如正在压缩的文件名。默认情况下,只包含命令行、任何警告和错误以及最终状态。
-L | --license
显示zip的许可证
-m | --move
将指定的文件移动到压缩文件
-MM | --must-match
所有输入模式必须至少匹配一个文件,所有找到的输入文件必须是可读的。
-n | --suffixes
不要尝试压缩以给定后缀命名的文件。
-nw | --no-wild
不要执行内部通配符处理。
-o | --latest-time
将zip归档的“最后修改”时间设置为在zip归档中的条目中找到的最新(最老的)“最后修改”时间。
-O | --output-file
像往常一样处理归档更改,但不是更新现有存档,而是将新存档输出到输出文件。
-p | --path
将相对文件路径作为存储在存档中的文件名称的一部分
-P | --password
加密
-q | --quite
静默模式,不显示执行过程
-r | --recurse-paths
压缩的时候,递归处理目录
-R | --recurse-patterns
递归遍历目录结构,从当前目录开始。
-s | --split-size
启用创建拆分存档并设置拆分大小
-sb | --split-bell
如果拆分并使用拆分暂停模式,则在zip对每个拆分目标暂停时按下铃声。
-sc | --show-command
显示已处理并退出的启动zip的命令行
-sf | --show-files
显示要操作的文件,然后退出。
-so | --show-options
显示在当前系统上编译的zip支持的所有可用选项
-sp | --split-pause
如果使用-s启用拆分,则启用拆分暂停模式
-su | --show-unicode
和-sf一样,如果存在,还会显示路径的unicode版本
-sU | --show-just-unicode
和-sf一样,仅显示路径的Unicode版本(如果存在),否则显示路径的标准版本。
-sv | --split-verbose
在拆分时启用各种详细的消息,显示拆分是如何进行的。
-t mmddyyyy | --from-date mmddyyyy
不要对在指定日期之前修改的文件进行操作,其中mm是月份(00-12),dd是月份的日期(01-31),yyyy是年。
-T | --test
测试新zip文件的完整性。如果检查失败,旧的zip文件将保持不变,并且(使用-m选项)不会删除输入文件。
-TT | --unzip-command
当使用-T选项时,使用命令cmd而不是“unzip-tqq”来测试存档。
-U | --copy-entries
将条目从一个存档复制到另一个存档。
-u | --update
更新文件,不存在的时候,直接追加。仅当zip存档中的现有条目比zip存档中的版本修改得更近时,才替换(更新)它。
-UN | --unicode
确定zip应该如何处理unicode文件名
-x | --exclude
压缩时不包含指定的文件
-y
压缩时直接保存符号链接
-v | --verbose
显示执行过程
-ws | --wild-stop-dirs
通配符仅在目录级别匹配。
-#
使用指定的数字#调整压缩速度,其中-0表示没有压缩(存储所有文件),-1表示最快的压缩速度(压缩较少),-9表示最慢的压缩速度(最佳压缩,忽略后缀列表)。默认的压缩级别是-6
-@ | --names-stdin
从标准输入中获取输入文件列表。每行只有一个文件名。

4、模式匹配
     ?,匹配任意单个字符
     *,匹配任意多个字符
     []匹配括号内所示范围内的任何字符(例如:[a-f],[0-9])。

5、退出码
     0,正常,没有错误。
     2,压缩文件的意外结束。
     3,检测到zip文件格式中的通用错误。
     4,在程序初始化期间,zip无法为一个或多个缓冲区分配内存。
     5,检测到zip文件格式出现严重错误。
     6,条目太大,无法处理(例如,不使用Zip 64或试图读取现有存档太大时,输入文件大于2GB)或条目太大,不能用zip拆分。
     7,无效注释格式。
     8,zip-T失败或内存不足。
     9,用户使用Control-C(或类似的)过早中止zip。
     10,使用临时文件时,zip遇到了一个错误。
     11,读取或查找错误。
     12,zip无事可做。
     13,丢失或空压缩文件。
     14,写入文件时出错。
     15,zip无法创建要写入的文件。
     16,坏命令行参数。
     18,zip无法打开要读取的指定文件。
     19,在此系统中不支持的选项编译了zip。

6、例子代码
创建存档stuff.zip(假设它不存在),并以压缩形式将所有文件放在当前目录中(.zip后缀自动添加,除非存档名称已经包含一个点;这允许明确说明其他后缀)
zip  stuff  *
zip  stuff  .* *
压缩整个目录。创建存档foo.zip,其中包含当前目录中包含的目录foo中的所有文件和目录。
zip  -r  foo  foo
您可能希望创建一个包含foo中文件的zip存档,而不记录目录名foo。可以使用-j选项关闭路径,如
zip  -j  foo  foo/*
如果您缺少磁盘空间,您可能没有足够的空间来保存原始目录和相应的压缩归档文件。在这种情况下,您可以使用-m选项分步骤创建归档文件。如果foo包含子目录TomDickHarry。其中,第一个命令创建foo.zip,下两个命令添加到其中。在完成每个zip命令后,最后创建的归档文件将被删除,为下一个zip命令提供工作空间。
zip  -rm  foo  foo/tom
zip  -rm  foo  foo/dick
zip  -rm  foo  foo/harry
使用-s设置拆分大小并创建拆分存档。大小可选地被k(KB)m(MB)g(Gb)t(Tb)之一跟随。创建目录foo的拆分存档,每个分区不大于2GB。如果foo包含5 GB的内容,并且内容未经压缩就存储在拆分存档中(为了使这个示例变得简单),这将创建三个分块,分别是2GBsplit.z012GBsplit.z02和略高于1GBsplit.zip
zip  -s  2g  -r  split.zip  foo
虽然zip不更新拆分档案,但zip提供了新的选项-O(-Output-file),允许更新拆分档案并将其保存在新的存档中。读取归档文件,即使拆分,也会添加foo.cbar.c文件,并将结果存档写入outArchive.zip。如果inArchive.zip是拆分的,那么outArchive.zip默认为相同的拆分大小。请注意,outArchive.zip和使用它创建的任何拆分文件都会在没有警告的情况下被覆盖。这种情况将来可能会改变。
zip  inarchive.zip  foo.c  bar.c  --out  outarchive.zip

7、实例
1)压缩文件
[root@localhost weijie]# zip -r res . -i *.c             //压缩当前目录下的所有.c文件
  adding: 11.c (stored 0%)
  adding: 4.c (stored 0%)
  adding: 2.c (deflated 9%)
  adding: 3.c (stored 0%)
  adding: 5.c (deflated 13%)
[root@localhost weijie]# ls
11.c  1.c.gz 2.c  3.c  4.c 5.c  6.c~  res.zip
2)给压缩文件添加、删除内容
[root@localhost weijie]# zip res.zip -g 6.c~          //追加6.c~
  adding: 6.c~ (stored 0%)
[root@localhost weijie]# zip res.zip -d 2.c           //删除2.c
deleting: 2.c
3)压缩时设置密码
[root@localhost weijie]# zip -er res . -i *.c        //设置密码,需要输入两次密码
Enter password:
Verify password:
  adding: 11.c (stored 0%)
  adding: 4.c (stored 0%)
  adding: 2.c (deflated 9%)
  adding: 3.c (stored 0%)
  adding: 5.c (deflated 13%)




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
76 [报告]
发表于 2018-12-19 07:37 |只看该作者
zipinfo
      在不解压的情况下,获取zip压缩文件的的详细信息。zipinfo列出了ZIP档案中有关文件的技术信息,最常见的是在MS-DOS系统上。这些信息包括文件访问权限、加密状态、压缩类型、版本和操作系统或压缩程序的文件系统等。默认的行为(没有选项)是列出存档中每个文件的单线条目,标题和拖车行为整个归档提供摘要信息。格式是Unix‘ls-l’和‘unzip-v’输出之间的交叉。见下文的详细说明。请注意,zipinfo与解压缩程序相同(在Unix下,链接到它);然而,在某些系统上,在解压缩编译时可能忽略了zipinfo支持。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
      zipinfo [-12smlvhMtTz]  file[.zip]  [file(s) ...]  [-x xfile(s) ...]

2、参数和选项列表
选项
说明
file[.zip]
ZIP存档的路径。如果文件规范是通配符,则按操作系统(或文件系统)确定的顺序处理每个匹配的文件。只有文件名可以是通配符;路径本身不能。通配符表达式类似于unix egrep(1)(正则)表达式,可能包含
[file(s)]
要处理的归档成员的可选列表,用空格分隔。(用VMSCLI定义的VMS版本必须用逗号分隔文件。)正则表达式(通配符)可用于匹配多个成员;参见上文。同样,请务必引用否则将由操作系统展开或修改的表达式。
[-x xfile(s)]
要排除在处理之外的归档成员的可选列表。

选项
说明
-h | --help
帮助信息
-V | --version
显示命令版本信息
-1
只列出文件名称
-2
和“-1”类似,但是可以单配其他选项“-h”、-i”、-z”
-s
类似“ls –l”的短格式
-m
类似“ls -l”的medium格式
-l
类似“ls -l”的长格式
-v
显示zip文件的详细信息
-h
只列出压缩包的文件名、大小、包内文件数目
-M
类似more命令,分屏显示
-t
列出压缩文件内的文件数目、压缩前后文件大小、压缩率
-T
将压缩包内文件的日期以年、月、日、时、分、秒的顺序列出
-z
显示压缩文件的注释信息

3、例子代码
要获得包含头行和总计行的ZIP存档Storage.zip的完整内容的基本的、简短的列表,只使用归档名称作为zipinfo的参数。
zipinfo  storage
要生成一个基本的、长格式的列表(而不是冗长的),包括标题和总计行,请使用-l:
zipinfo  -l  storage
要列出没有标题和总计行的存档的完整内容,可以忽略-h和-t选项,或者显式地指定内容:
zipinfo  --h-t  storage
zipinfo  storage  \*
默认情况下,若要关闭汇总行,请使用环境变量(此处假定为C shell):
setenv  ZIPINFO  --t
zipinfo  storage
为了再次获得第一个示例的完整、简短的列表,考虑到前面示例中设置了环境变量,有必要显式地指定-s选项,因为-t选项本身意味着只打印页脚行
setenv  ZIPINFO  --t
zipinfo  -t  storage            [only totals line]
zipinfo  -st  storage           [full listing]   
若要以中等格式列出存档中单个文件的信息,请显式指定文件名。
zipinfo  -m  storage  unshrink.c
任何成员文件的规范都将覆盖默认的标头和总计行;将只打印有关请求文件的一行信息。这是在请求有关单个文件的信息时所期望的直观结果。对于多个文件,了解总的压缩和未压缩大小通常是有用的;在这种情况下,可以显式地指定-t:
zipinfo  -mt  storage  "*.[ch]"  Mak\*
要获取有关ZIP存档的最大信息,请使用详细选项。如果操作系统允许,通常明智的做法是将输出输送到Unix More(1)这样的过滤器中:
zipinfo  -v  storage | more
要查看存档中最近修改的文件,请结合外部排序实用程序(如Unix Sort(1)和sed(1)使用-T选项
zipinfo  -T  storage | sort  –nr  -k  7 | sed  15q

4、实例
1)显示压缩文件内的信息
[root@localhost weijie]# zipinfo res.zip                        //查看压缩包内文件信息
Archive:  res.zip
Zip file size: 907 bytes, number of entries: 5
-rw-r--r--  3.0 unx        0 BX stor 18-Sep-14 10:46 11.c
-rwxr--r--  3.0 unx       15 TX stor 18-Sep-19 16:08 4.c
-rwxr--r--  3.0 unx       11 TX defN 18-Sep-19 16:08 2.c
-rwxr--r--  3.0 unx       15 TX stor 18-Sep-19 16:08 3.c
-rw-r--r--  3.0 unx       38 TX defN 18-Sep-14 09:41 5.c
5 files, 79 bytes uncompressed, 73 bytes compressed:  7.6%
2)使用-h选项
[root@localhost weijie]# zipinfo -h res.zip             //只显示压缩包大小、文件数目
Archive:  res.zip
Zip file size: 907 bytes, number of entries: 5




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
77 [报告]
发表于 2018-12-20 07:11 |只看该作者
本帖最后由 一生有你llx 于 2019-02-04 08:30 编辑

znew
      将compress压缩成的”.Z”文件,转换成“.gz”格式的文件。ZNew将文件从.z(压缩)格式重新压缩到.gz(Gzip)格式。如果要重新压缩已以gzip格式的文件,请重命名该文件以强制.z扩展名,然后应用znew。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      znew [选项]  name.Z

2、选项列表
选项
说明
--help
帮助信息
--version
显示命令版本信息
-f
强制转换
-t
在删除原始的.Z文件之前,测试新生成的.gz文件
-v
显示详细信息
-9
使用最高压缩率
-P
使用管道功能
-K
如果.Z文件比新生成的.gz文件小,那么保留.Z文件

3、实例
     转换压缩文件
[root@localhost weijie]# znew 1.Z
[root@localhost weijie]# ls
11.c  1.c.gz 1.gz  2.c  3.c 4.c  5.c  6.c~ res.zip

做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
78 [报告]
发表于 2018-12-21 07:17 |只看该作者
bunzip2
      解压缩bzip2压缩过的文件。
      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      bunzip2 [-fkvsVL]  文件

2、选项列表
选项
说明
-f | --force
强制执行
-k | --keep
解压之后,保留源文件
-v | --verbose
显示详细信息
-s | --small
减少内存使用,用于压缩、解压缩和测试。使用修改的算法对文件进行解压缩和测试,该算法每个块字节只需要2.5字节。这意味着任何文件都可以在2300 k内存中解压缩,尽管速度是正常速度的一半。
-L | --license | -V | --version
显示软件版本,许可条款和条件。

3、实例
1)解压,保留压缩包
[root@localhost weijie]# bunzip2 -k 2.c.bz2             //解压之后保留压缩包
[root@localhost weijie]# ls
11.c  1.c.gz 1.gz  2.c  2.c.bz2  3.c  4.c  5.c  6.c~  rec000012.c.bz2  res.zip
2)解压
[root@localhost weijie]# bzip2 -d res.bz2            //解压
[root@localhost weijie]# ls
11.c  1.c.bz2 2.c  3.c  4.c 5.c  6.c~  bak res
3)将两个文件压缩到一个文件中
[root@localhost weijie]#cat 1.c 2.c                   //输出两个文件的内容
hello world,
i am david.
i love linux,
love code.
123
23
212
[root@localhost weijie]# bzip2 –c 1.c > foo.gz        //1.c压缩到foo
[root@localhost weijie]# bzip2 –c 2.c >> foo.gz       //2.c压缩到foo
[root@localhost weijie]# bgzip2 -d foo.gz              //解压foo
[root@localhost weijie]# cat foo                        //显示foo的内容
hello world,
i am david.
i love linux,
love code.
123
23
212


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
79 [报告]
发表于 2018-12-22 08:11 |只看该作者
bzcat
       解压缩被bzip2压缩过的文件,将文件解压到标准输出,此命令只有一个选项-s。该指令对压缩过的二进制文件没有意义,因为二进制文件没有可读性。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      bzcat [-s] 文件

2、选项列表
选项
说明
-s
降低程序运行时内存使用

3、实例
       解压文件到标准输出
[root@localhost weijie]# cat 2.c
123
23
212
[root@localhost weijie]# bzcat -s 2.c.bz2             //将文件解压到标准输出
123
23
212



论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
80 [报告]
发表于 2018-12-22 21:04 |只看该作者
zcat
     解压有gzip压缩的文件,将解压结果送到标准输出。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
      zcat [-fhVL] 文件

2、选项列表
选项
说明
-h | --help
帮助信息
-V | --version
显示命令版本信息
-f | --force
强制执行
-L | --licence
显示gzip的版本并且退出

3、实例
1)查看压缩包信息
[root@localhost weijie]# zcat -l 1.c.gz
         compressed        uncompressed  ratio uncompressed_name
                 70                  53   9.4% 1.c
2)解压文件到标准输出
[root@localhost weijie]# zcat 1.c.gz
hello world,
i am david.
i love linux,
love code.


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP