Linux操作系统实验四 文件管理(二)

您所在的位置:网站首页 怎么复制命令提示的内容和内容 Linux操作系统实验四 文件管理(二)

Linux操作系统实验四 文件管理(二)

2023-07-03 13:17| 来源: 网络整理| 查看: 265

1.实验目的与要求

掌握文件和目录管理的相关操作掌握文件及文件夹其他操作

2.实验平台

实验室安装的实验环境(Linux操作系统)和头歌(www.educoder.net)实验平台(课程实验)

3.实验内容

linux下文件和目录的管理等操作(结合编程模式)文件及文件夹其他操作,如拷贝、移动、链接、压缩、打包等

4.实验详细内容、步骤

任务描述

本关主要讲解在 Linux 命令行下如何对文件进行创建和删除操作。

本关任务:创建一个新的文件,同时将一个已经存在的文件删除。

相关知识

Linux 几乎大多数工作都可以在命令行下完成,除非要运行图形化工具。 Linux bash shell 提供了许多命令,例如:在命令行下可以轻松的完成文件的创建和删除。

本关将介绍如何在 Linux 命令行下创建文件和删除文件。

Linux创建文件

Linux 中使用touch命令来创建一个空文件。

具体命令如下:touch 文件名

具体说明:

如果一次想创建多个文件,则每个文件名用空格隔开;touch命令创建一个指定的新文件,并将当前登录用户作为文件所有者;由于touch命令创建的文件为空,所以文件的大小为 0 ;touch命令还可以用于更改文件的访问时间和修改时间,而不改变文件的内容; Linux删除文件

Linux 中使用rm命令来删除一个已经存在的文件。

具体命令如下:rm 参数 文件名

常用参数如下:

-f:强制删除文件或目录;-i:删除已有文件或目录之前先询问用户;-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;-i:删除已有文件或目录之前先询问用户。

具体说明:

如果一次想删除多个文件,则每个文件名用空格隔开;rm命令可以使用通配符来删除文件。 编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

新创建两个文件空文件file1和file2;删除系统已存在的两个文件oldFile1和oldFile2;

任务描述

本关主要讲解在 Linux 命令行下如何对目录进行创建和删除操作。

本关任务:创建一个新的空目录,同时将一个已经存在的目录删除。

相关知识

本关将介绍如何在 Linux 命令行下创建目录和删除目录。

Linux创建目录

Linux 中使用mkdir命令来创建一个空目录。

具体命令如下:mkdir 参数 目录名

常用参数如下:

-p或--parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。

具体说明:

如果一次想创建多个目录,则每个目录名用空格隔开;mkdir命令创建一个指定的目录,并将当前登录用户作为目录所有者;mkdir命令创建一个空目录后,该目录下只存在两个特殊的目录,分别是.和..。 Linux删除目录

Linux 中使用rmdir命令来删除一个已经存在的空目录。

具体命令如下:rmdir 参数 目录名

常用参数如下:

-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;

具体说明:

如果一次想删除多个空目录,则每个目录名用空格隔开;rmdir命令可以使用通配符来删除目录。

如果想删除的目录不为空,则先使用rm命令将目录下的所有文件都清空,然后再使用rmdir将目录删除,或者直接使用rm -r命令直接递归的删除整个目录。

任务描述

本关主要讲解在 Linux 命令行下如何对文件进行拷贝和重命名操作。

本关任务:将一个指定文件拷贝到指定的目录下,同时对一个已存在的文件重命名。

相关知识

本关将介绍如何在 Linux 命令行下对文件拷贝和重命名。

Linux拷贝文件

Linux 中使用cp命令将一个或多个源文件复制到指定的目的目录下。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。

具体命令如下:cp 参数 源文件 目的目录

常用参数如下:

-f:强行复制文件或目录,不论目标文件或目录是否已存在;-i:覆盖既有文件之前先询问用户;-p:保留源文件或目录的属性。

具体说明:

cp命令支持同时复制多个文件,当一次复制多个文件时,目的目录参数必须是一个已经存在的目录,否则将出现错误;cp命令支持同时复制多个文件,当一次复制多个文件时,多个文件用空格分隔。 Linux重命名文件

Linux 中使用mv命令来重命名一个文件名。

mv命令还可以用来移动文件,类似于Windows上的剪切功能。

具体命令如下:mv 参数 目录名

常用参数如下:

-f:若目标文件与现有的文件重复,则直接覆盖现有的文件;-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。

具体说明:

如果一次想移动多个文件,则每个文件名用空格隔开;mv命令可以使用通配符来移动目录。 编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

将当前目录下的文件file1和file2拷贝到目录Dir下;将当前目录下的文件file1拷贝到目录Dir下并重命名为file1Cpy;将当前目录下的文件file3和file4移动到目录Dir下;将当前目录下的文件file5重命名为file6。

任务描述

本关主要讲解在 Linux 命令行下如何对目录进行拷贝和重命名操作。

本关任务:将一个指定目录拷贝到指定的目录下,同时对一个已存在的目录重命名。

相关知识

本关将介绍如何在 Linux 命令行下对目录拷贝和重命名。

Linux拷贝目录

Linux 中使用cp -r命令将一个或多个源目录复制到指定的目录下。它可以将单个源目录复制成一个指定目录名的具体的目录或一个已经存在的目录下。

具体命令如下:cp 参数 源目录 目的目录

常用参数如下:

-r 是递归把源目录下的目录递归进行移动;-f:强行复制文件或目录,不论目标文件或目录是否已存在;-i:覆盖既有文件之前先询问用户;-p:保留源文件或目录的属性;

具体说明:

cp命令支持同时复制多个目录,当一次复制多个目录时,目的目录参数必须是一个已经存在的目录,否则将出现错误;cp命令支持同时复制多个目录,当一次复制多个目录时,多个目录名用空格分隔;cp命令拷贝目录和拷贝文件大致用法相似,最大差别就是拷贝目录的时候必须加上-r参数,而拷贝文件的时候不需要加-r参数。 Linux重命名目录

Linux 中使用mv命令来重命名一个目录名。

mv命令还可以用来移动目录,类似于Windows上的剪切功能。

具体命令如下:mv 参数 源目录 目的目录

常用参数如下:

-f:若目标目录与现有的目录重复,则直接合并现有的目录;-i:交互式操作,覆盖前先行询问用户,如果源目录与目标目录同名,则询问用户是否合并目标目录。用户输入”y”,表示将合并目标目录;输入”n”,表示取消对源目录的移动。这样可以避免误将目录覆盖。

具体说明:

如果一次想移动多个目录,则每个目录名用空格隔开;mv命令可以使用通配符来移动目录;mv命令移动目录和移动文件的使用大致一样,唯一不同的是如果出现源目录和目标目录重名,则采用合并的方式,而对于文件则是直接覆盖。 编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

将当前目录下的目录Dir1和Dir2拷贝到目录Dir下;将当前目录下的目录Dir1拷贝到目录Dir下并重命名为Dir1Cpy;将当前目录下的目录Dir3和Dir4移动到目录Dir下;将当前目录下的目录Dir5重命名为Dir6。

任务描述

本关主要讲解在 Linux 命令行下如何查看文件内容和目录下内容。

本关任务:查看一个文件的内容和列出一个目录下的所有内容。

相关知识 Linux查看文件内容

Linux 中查看文件内容的命令有很多,接下来我们介绍常用的几个命令。

cat命令

具体命令如下:cat 参数 文件名

常用参数如下:

-n 或 --number:由1开始对所有输出的行数编号;

- -b 或 --number-nonblank:和-n相似,只不过对于空白行不编号。

具体说明:

cat命令支持同时查看多个文件,当一次查看多个文件时,每个文件的内容都会被打印到屏幕上;cat命令不能对文件进行编辑操作,只能查看文件内容。 Linux查看目录内容

Linux 中使用ls命令来查看一个目录下的内容。

具体命令如下:ls 参数 目录

常用参数如下:

-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);-A:显示除影藏文件“.”和“..”以外的所有文件列表;-l:列出内容的详细信息;-r:以文件名反序排列并输出目录内容列表;-s:显示文件和目录的大小,以区块为单位;-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;-R:递归处理,将指定目录下的所有文件及子目录一并处理。

具体说明:

如果一次查看多个目录,则每个目录名用空格隔开。 编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

查看当前目录下的文件file1的所有内容;查看当前目录下的文件file2的头5行内容;查看当前目录下的文件file2的末尾5行内容;查看目录/home目录下的所有内容(包括隐藏内容)。

任务描述

有时,我们会在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 ii. #include iii. #include 函数格式如下: int creat (const char *pathname,mode_t mode); 参数说明: pathname:需要创建文件的绝对路径名或相对路径名; mode:用于指定所创建文件的权限;

常见的mode取值及其含义见下表所示:

函数返回值说明: 调用成功时,返回值为 文件的描述符(大于0的整数);调用失败时,返回值为-1并设置错误编号errno。 编程要求

本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

在当前目录下创建一个名为testFile的文件,并设置其权限为651。

任务描述

在Linux系统中,如果要对一个文件进行操作,操作前需要将这个文件打开。这样才能实现对该文件的操作。

本关任务:学会使用C语言在Linux系统中打开与关闭文件操作。

相关知识

文件的打开与关闭操作是 I/O 操作的第二步。在Linux系统中提供了以下两个系统调用函数用于打开和关闭文件操作,分别是open和close。本关将介绍文件的打开和关闭函数的使用方法。

使用man 2 函数名也可以查询这些函数的使用方法。

文件的打开

打开文件的系统调用函数是open,具体的说明如下:

需要的头文件如下: i. #include ii. #include iii. #include 函数格式如下: int open(coust char *pathname, int flags); int open(const char *pathname, int flags, made_t mode);

参数说明:

pathname:需要被打开或创建的文件绝对路径名或相对路径名; flags:用于描述文件的打开方式; mode:用于指定所创建文件的权限(与上一关中creat函数中mode取值一致);

第一个open函数用于打开已经存在的文件。而第二个open函数可以创建一个不存在的文件且打开,该函数将flags参数设置为O_CREAT | O_WRONLY | O_TRUNC时等同于上一关中的creat函数。

常见的flags取值及其含义见下表所示:

函数返回值说明: 调用成功时,返回值为 文件的描述符(大于0的整数);调用失败时,返回值为-1并设置错误编号errno。

文件的关闭

关闭文件的系统调用函数是close,具体的说明如下:

需要的头文件如下: i. #include 函数格式如下: int close(int fd);

参数说明:

fd:需关闭文件的描述符; 函数返回值说明: 调用成功时,返回值为 0;调用失败时,返回值为-1,并设置错误编号errno。 编程要求

本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

补全open_File函数,使其以读方式打开一个文件,并返回文件描述符fd。补全close_File函数,使其关闭一个已经被打开的文件。

任务描述

通过上一关的学习,我们学会了如何使用C语言来打开和关闭文件,本关将继续介绍对文件的读写操作。

本关任务:学会使用C语言在Linux系统中对文件进行读写操作。

相关知识

文件的读写是 I/O 操作的核心内容。上一关中已经介绍了如何打开和关闭一个文件,但是要实现文件的 I/O 操作就必须对其进行读写,文件的读写操作所用的系统调用分别是read和write。本关将介绍文件的读写函数的使用方法。

使用man 2 函数名也可以查询这些函数的使用方法。

文件的写操作

写入文件的系统调用函数是write,具体的说明如下:

需要的头文件如下: i. #include 函数格式如下: ssize_t write(int fd, void *buf, size_t count);

参数说明:

fd:表示将对之进行写操作的文件打开时返回的文件描述符;buf:指向存放将写入文件的数据的缓冲区的指针;count:表示本次操作所要写入文件的数据的字节数; 函数返回值说明: 调用成功时,返回值为所写入的字节数;调用失败时,返回值为-1并设置错误编号errno。 文件的读操作

读取文件的系统调用函数是read,具体的说明如下:

需要的头文件如下: i. #include 函数格式如下: ssize_t read(int fd, void *buf, size_t count);

参数说明:

fd:表示将对之进行写操作的文件打开时返回的文件描述符;buf:指向存放所读数据的缓冲区的指针;count:读操作希望读取的字节数; 函数返回值说明: 调用成功时,返回值为本次读操作实际读取的字节数;调用失败时,返回值为-1并设置错误编号errno。 编程要求

本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

补全write_File函数,完成向文件写入字符串功能。并返回实际写入字符个数。补全readLine函数,完成从文件中读取一行的功能(不包括换行符),并返回实际读取的字符个数(文件的换行符号为\n)。

任务描述

通过前三关的学习,我们学会了如何使用C语言来创建、打开/关闭和读写文件,本关将介绍如何删除一个已经存在的文件。

本关任务:学会使用C语言在Linux系统中删除文件操作。

相关知识

当不需要一个文件时,我们通常直接选中文件按下delete键对其删除,本关将介绍如何在Linux系统中使用C语言删除一个已经存在的文件。

在Linux系统中使用unlink和remove系统调用可以实现对文件的删除操作。

使用man 2 函数名或者man 3 函数名也可以查询这些函数的使用方法。

使用unlink函数删除文件

删除文件的系统调用函数是unlink,具体的说明如下:

需要的头文件如下: i. #include 函数格式如下: int unlink(const char *pathname); 参数说明: i. pathname:需要删除的文件绝对路径名或相对路径名;函数返回值说明: 调用成功时,返回值为0;调用失败时,返回值为-1并设置错误编号errno。 使用unlink函数删除文件

remove是删除文件的另一个函数,该函数是C语言的库函数,其本质是通过调用系统调用unlink来完成文件的删除操作,具体的说明如下:

需要的头文件如下: i. #include 函数格式如下: int remove(const char *pathname); 参数说明: i. pathname:需要删除的文件绝对路径名或相对路径名;函数返回值说明: 调用成功时,返回值为0;调用失败时,返回值为-1并设置错误编号errno。 编程要求

本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

删除当前目录下的testFile文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3