美文网首页
每日命令 | touch、mkdir

每日命令 | touch、mkdir

作者: 安全小白团 | 来源:发表于2019-02-17 14:41 被阅读0次

    01 命令简介


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

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

    mkdir——make directory,创建目录

    02 命令详解


    语法

    mkdir  [选项] 目录名

    touch  [选项] 文件名

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

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

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

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

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

    参数

    mkdir  目录名

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

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

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

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

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

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

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

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

    选项

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

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

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

    mkdir father_dir/son_dir

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

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

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

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

    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命令查看文件更为详细的状态信息。

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

    Access:访问时间;读取但不修改文件内容

    Modify:修改时间;修改文件内容

    Change:改动时间;属性和位置的改动

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

    touch -a file.txt

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

    touch -m file.txt

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

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

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

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

    [[CC]YY]MMDDhhmm[.ss]

    其实就是世纪、年、月、日、时、分、秒的英文首字母。

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

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

    03 知识总结

    语法:

    mkdir  [选项] 目录名

    touch  [选项] 文件名用途:

    mkdir————创建空目录

    touch————修改文件和目录的访问时间和修改时间(默认情况下创建空文件)参数:

    mkdir:目录的路径名(若只提供目录名,则在当前工作目录中创建目录)

    touch:文件的路径名(若只提供文件名,则在当前工作目录中创建文件)选项:

    mkdir:-p————递归创建

    touch:-a————只更新访问时间

    -m————只更新修改时间

    -t、-d————指定时间属性的值

    -c————即使文件不存在也不创建文件

    其他:

    stat命令:查看文件或文件系统的状态信息

    相关文章

      网友评论

          本文标题:每日命令 | touch、mkdir

          本文链接:https://www.haomeiwen.com/subject/zfugeqtx.html