任务描述
有时,我们会在Linux
系统中将多个文件打包成一个单独的文件,通过本关的学习,我们将学会如何在Linux
系统中将多个文件/目录打包生成一个文件。
本关任务:使用tar
命令完成文件和目录的打包操作。
相关知识
tar
(tape archive
的简写)工具可完成许多功能,其名称源于它的原始功能-创建和读取归档文件和备份磁带。如今,该工具常用来将多个文件或多个目录打包成一个tar
文件,或者将某个tar
文件分解开。
接下让我们详细的学习tar
的使用方法。
打包
tar
命令可以将多个文件/目录进行打包,将多个文件生成一个文件,生成的文件后缀为.tar
。
具体打包命令如下:
tar -cvf 生成的tar包名 要打包的文件/目录列表
常用命令参数如下:
- -c 建立新的归档文件;
- -v 处理过程中输出相关信息;
- -f 对普通文件操作;
解包
tar
命令可以将已经打包好的文件解压出来。
具体打包命令如下:
tar -xvf 解压包名 -C 解压到指定目录
常用命令参数如下:
- -x 或--ext\fract或--get:从备份文件中还原文件;
- -v 处理过程中输出相关信息;
- -f 对普通文件操作;
- -C <目的目录> 切换到指定的目录;
如果不使用-C
(大写)参数,则默认解压到当前目录下。
编程要求
在右侧编辑器中补充代码,使用tar
命令打包和解包,具体编程要求如下:
- 使用
tar
命令将当前目录下的oldFile1
和oldFile2
文件打包成一个newFile.tar
文件; - 使用
tar
命令将当前目录下的oldFile.tar
文件解压到当前目录下。
任务描述
由于磁盘空间有限,我们通常会将不常用的大文件进行压缩以便于节约磁盘空间,通过本关的学习,我们将学会Linux
系统上常见的压缩命令。
本关任务:对系统中已存在的文件/目录进行压缩操作。
相关知识
Linux
下存在多个文件压缩工具,常用的有bzip2
、gzip
和zip
。这三个工具都是可以将一个文件进行压缩操作,使其在不丢失任何信息的情况下占用较少的磁盘空间。而如何对于多个文件/目录进压缩操作呢?
我们通过上一关的学习,我们了解到了使用tar
命令可以将多文件/目录打包生成一个文件,那么对于多文件/目录的压缩操作分为两步:第一步是将其进行打包,然后将打包过后的文件进行压缩操作。
接下让我们详细的学习bzip2
、gzip
和zip
的使用方法。
bzip2
bzip2
命令用于创建和管理(包括解压缩).bz2
格式的压缩包。
具体命令如下:
bzip2 命令参数 指定要压缩的文件
常用命令参数如下:
- -z或——compress:强制执行压缩;
- -d或——decompress:执行解压缩;
- -f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数;
- -v或——verbose:压缩或解压缩文件时,显示详细的信息;
gzip
gzip
命令用于创建和管理(包括解压缩).gz
格式的压缩包。
具体命令如下:
gzip 命令参数 指定要压缩的文件
常用命令参数如下:
- -d或--decompress或----uncompress:解开压缩文件;
- -f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
- -l或——list:列出压缩文件的相关信息;
- -r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
- -v或——verbose:显示指令执行过程;
zip
zip
命令对文件进行打包操作。zip
是个使用广泛的压缩程序,文件经它压缩后会另外产生具有.zip
扩展名的压缩文件。
具体命令如下:
zip 命令参数 指定生成的压缩文件名 要被压缩的文件/目录列表
常用命令参数如下:
- -d:从压缩文件内删除指定的文件;
- -q:不显示指令执行过程;
- -r:递归处理,将指定目录下的所有文件和子目录一并处理;
- -v:显示指令执行过程或显示版本信息;
- -u:更换较新的文件到压缩文件内;
- -x<范本样式>:压缩时排除符合条件的文件;
tar命令进行压缩
在上一关的学习中,我们学会了使用tar
命令对多个文件/目录进行打包操作,如果针对多文件/目录进行压缩操作时,首先使用tar
将其打包生成一个文件,然后使用bzip2
和gzip
对其进行压缩,那么这里也可以使用tar
命令一步就实现对多文件/目录进行压缩操作。
采用bzip2
方式执行tar
命令进行压缩的具体命令如下:
tar -jcvf 指定生成的压缩文件名 要被压缩的文件/目录列表
常用命令参数如下:
- -c 建立新的归档文件;
- -v 处理过程中输出相关信息;
- -f 对普通文件操作;
- -j 以bzip2对文件/目录进行压缩;
采用gzip
进行压缩的具体命令如下:
tar -zcvf 指定生成的压缩文件名 要被压缩的文件/目录列表
常用命令参数如下:
- -c 建立新的归档文件;
- -v 处理过程中输出相关信息;
- -f 对普通文件操作;
- -z 以gzip对文件/目录进行压缩;
编程要求
在右侧编辑器中补充代码,对系统中已存在的文件/目录进行压缩操作,具体编程要求如下:
- 使用
tar
命令将当前目录下的oldFile1
和oldFile2
文件打包压缩成一个newFile.tar.gz
文件; - 使用
bzip2
命令对当前目录下的oldFile.tar
文件压缩; - 使用
zip
命令将当前目录下的oldDir
目录所有文件/目录压缩生成oldDir.zip
。
任务描述
通常,我们上网下载的文件一般都是压缩过后的文件,通过本关的学习,我们可以学会如何将一个压缩文件进行解压操作。
本关任务:将压缩文件进行解压缩操作。
相关知识
Linux
下存在多个文件压缩工具,上一关我们介绍了包括bzip2
、gzip
和zip
。针对这三种压缩工具生成的压缩包,我们可以使用bunzip2
、gunzip
和unzip
命令对其进行解压缩。
接下让我们详细的学习bunzip2
、gunzip
和unzip
的使用方法。
bunzip2
bunzip2
命令解压缩由bzip2
指令创建的.bz2
压缩包。使用bzip2 -d
命令也可以将.bz2
压缩包进行解压。
具体命令如下:
bunzip2 命令参数 指定要解压的文件
常用命令参数如下:
- -f或--force:解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件;
- -k或——keep:在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数;
- -v或——verbose:解压缩文件时,显示详细的信息;
gunzip
gunzip
命令解压缩由gzip
指令创建的.gz
压缩包。使用gzip -d
命令也可以将.gz
压缩包进行解压。
具体命令如下:
gunzip 命令参数 指定要解压的文件
常用命令参数如下:
- -f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
- -l或-list:列出压缩文件的相关信息;
- -q或-quiet:不显示警告信息;
- -r或-recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
- -v或-verbose:显示指令执行过程;
unzip
unzip
命令用于解压缩由zip
命令压缩的.zip
压缩包。
具体命令如下:
unzip 命令参数 指定要解压的文件
常用命令参数如下:
- -q:执行时不显示任何信息;
- -n:解压缩时不要覆盖原有的文件;
- -d<目录>:指定文件解压缩后所要存储的目录;
tar命令进行解压缩
在上一关的学习中,我们学会了使用tar
命令对多个文件/目录进行打包压缩操作,本关将继续讲解使用tar
命令对文件进行解压缩操作。
采用bunzip2
进行解压缩的具体命令如下:
tar -jxvf 指定要解压的文件
常用命令参数如下:
- -x 或--ext\fract或--get:从备份文件中还原文件;
- -v 处理过程中输出相关信息;
- -f 对普通文件操作;
- -j 以bunzip2进行解压缩;
采用gzip
进行压缩的具体命令如下:
tar -zxvf 指定要解压的文件
常用命令参数如下:
- -x 或--ext\fract或--get:从备份文件中还原文件;
- -v 处理过程中输出相关信息;
- -f 对普通文件操作;
- -z 以gunzip进行解压缩;
编程要求
在右侧编辑器中补充代码,将压缩文件进行解压,具体编程要求如下:
- 使用
tar
命令解压当前目录下的oldFile.tar.gz
文件; - 使用
bunzip2
命令解压当前目录下的oldFile.tar.bz2
文件; - 使用
unzip
命令解压当前目录下的oldDir.zip
。
任务描述
在Linux系统中,如果要对一个文件进行操作,首先要求文件已经存在,如果文件不存在,则需要创建文件。
本关任务:学会使用C
语言在Linux系统中创建文件操作。
相关知识
文件的创建操作是 I/O
操作的第一步。在Linux系统中creat
系统调用可以实现对文件的创建。本关只介绍文件创建函数的使用方法。
在Linux系统中可以使用man
命令来查询这些函数的使用方法。具体的查询命令为: man 2
函数名
其中,2
表示查找系统调用函数,关于文件的创建、打开和关闭函数都是系统调用函数,因此使用2
作为man
命令的第一个参数。
文件的创建
创建文件的系统调用函数是creat
,具体的说明如下:
- 需要的头文件如下:
- i. #include <sys/types.h>
- ii. #include <sys/stat.h>
- iii. #include <fcntl.h>
- 函数格式如下:
int creat (const char *pathname,mode_t mode);
参数说明:
pathname:需要创建文件的绝对路径名或相对路径名;
mode:用于指定所创建文件的权限;
常见的mode
取值及其含义见下表所示:
- 函数返回值说明: 调用成功时,返回值为 文件的描述符(大于0的整数);调用失败时,返回值为
-1
并设置错误编号errno
。
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
- 在当前目录下创建一个名为
testFile
的文件,并设置其权限为651
。