每日命令 | touch、mkdir

命令简介

       任何事物都有生命周期,Linux中的文件和目录也一样:创建、修改、删除。今天我们来讲一讲文件和目录的创建。

       touch——修改文件的访问时间和修改时间(可用来创建空文件)

       mkdir——make directory,创建目录

命令详解

语法

1
2
mkdir  [选项] 目录名
touch [选项] 文件名

       mkdir和touch两条命令,都有选项和参数。只不过mkdir命令的参数是目录名,而touch命令的参数是文件名而已。

       这里跟大家强调一下:选项和参数的可选,不同命令的要求是不一样的。

       选项对命令来说,一般都是可选的。参数是否可选,不同命令有各自的规定。如果可选,我会添加方括号“[ ]”;如果不可选,也就是必需,则不会添加方括号“[ ]”。

       因此,语法中选项加了“[ ]”,代表选项不是必需的,可以省略;但两条命令的参数,我都没加“[ ]”,证明这两条命令在使用时必需提供参数。请各位校友注意这些细节。

       可以看到,系统明确提示命令缺少操作数,也就是参数。

参数

1
mkdir  目录名

       mkdir命令的参数是要创建的目录的名字。严格来讲,参数是要创建的目录的路径名。

       我们可以只提供要创建的目录的名字。这种情况下,系统会在当前的工作目录中创建目录。

       可以看到,在当前的工作目录中创建了new_dir目录。另外目录名可以包含空格,但这个时候目录名需要用引号括起来。

       我们也可以指定目录的路径。这个时候,就会在我们指定的路径下创建目录。

       这两者可以想象成软件的默认安装和自定义安装,这样可能形象些,方便大家理解。

       如果要创建的目录已经存在,系统则会报错,提示目录已经存在。

       touch命令,主要是用于修改文件和目录的访问时间和修改时间,但默认情况下,参数指定的文件不存在的话,touch命令会创建该文件。

       和创建目录一样,不指定路径的话,会在当前工作目录创建文件。我们也可以指定文件路径。

选项

       mkdir命令和touch命令可以同时处理多个参数。在提供多个参数时,我们只需要用空格分隔参数即可。

       可以看到,在同级目录中创建了两个目录和文件。那可以在新建目录的同时,再在其中新建一个目录吗?

       试试看。通过如下命令在创建father_dir目录的同时,在其中新建son_dir目录。

1
mkdir father_dir/son_dir

       发现系统报错,原因我在图片中已经标明。这条命令的意思根本不是在新建father_dir目录的同时,在其中新建son_dir目录,而是在当前目录的father_dir中新建son_dir目录,这其实是在指定新建目录的相对路径。但此时当前目录并不存在father_dir目录,所以系统才会报错。

       那难道只能新建一个目录,然后切换到新目录中再新建子目录,这样一层一层进行吗?

       当然不是的,如果只能这样的话,几十层的目录创建不得创建半天?当然一般也不会有这么多层。

       mkdir命令提供了一个很人性化的”-p“选项,让我们可以很轻松的实现这些工作。

1
mkdir -p  目录名/目录名/.../目录名

       加了”-p“选项后,系统没有报错,在新建father_dir目录的同时,在其中新建了son_dir目录。

       这就是”-p“选项的功效:创建通向指定目录但尚不存在的所有目录。换句话说,就是将路径中不存在的目录全部创建。

       father_dir/son_dir,最开始,当前目录不存在father_dir目录,就先创建father_dir目录;创建完后发现father_dir目录下没有son_dir目录,就继续创建son_dir目录,直到路径中所有目录都存在。也有人把这称为“递归创建”。

       mkdir命令常用的选项还有“-v”选项和“-m”选项。“-v”选项的作用是每创建一个目录就打印一条信息,“-m”选项的作用是设置目录的权限。这里先介绍一下“-v”选项,“-m”选项等以后介绍权限时再讲。

       上一章节说到要创建的目录如果已经存在,系统则会报告,那么如果创建的文件已经存在,系统会报错吗?

       可以看到,系统并没有报错,但好像也看不出有啥区别。这就涉及时间属性了。

       利用长格式查看详细信息,发现两次命令后,文件时间不一样。我们可以使用stat命令查看文件更为详细的状态信息。

       列出的信息中有三个时间。

1
2
3
Access:访问时间;读取但不修改文件内容
Modify:修改时间;修改文件内容
Change:改动时间;属性和位置的改动

       在文件存在的情况下,touch命令默认会修改文件的访问时间和修改时间。但它提供了“-a”选项和“-m”选项,分别只修改访问时间或修改时间。

1
touch -a file.txt

       “-a”选项,只改变访问时间。

1
touch -m file.txt

       “-m”选项,只改变修改时间。

       除了可以指定修改哪种时间属性,还可以指定时间属性的值(默认是当前时间)。

       指定时间属性的值有两种选项:”-t“选项和”-d“选项。效果一样,只是值的格式不一样而已。

       “-t”选项的时间格式为:

1
2
[[CC]YY]MMDDhhmm[.ss]
其实就是世纪、年、月、日、时、分、秒的英文首字母。

       “-d”选项相对“-t”选项,时间格式会多一些。图片中是其中的一种,其他格式这里不再赘述,有兴趣的校友可自行查询资料。

       touch命令还有个“-c”选项。在默认情况下,如果文件不存在,touch命令会新建空文件;加了“-c”选项之后,就不会创建文件。

知识总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
语法:
mkdir [选项] 目录名
touch [选项] 文件名
用途:
mkdir————创建空目录
touch————修改文件和目录的访问时间和修改时间(默认情况下创建空文件)
参数:
mkdir:目录的路径名(若只提供目录名,则在当前工作目录中创建目录)
touch:文件的路径名(若只提供文件名,则在当前工作目录中创建文件)选项:
mkdir:-p————递归创建
touch:-a————只更新访问时间
-m————只更新修改时间
-t、-d————指定时间属性的值
-c————即使文件不存在也不创建文件
其他:
stat命令:查看文件或文件系统的状态信息

免责声明

       安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。

0%