命令简介
任何事物都有生命周期,Linux中的文件和目录也一样:创建、修改、删除。今天我们来讲一讲文件和目录的创建。
touch——修改文件的访问时间和修改时间(可用来创建空文件)
mkdir——make directory,创建目录
命令详解
语法
1 | mkdir [选项] 目录名 |
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 | Access:访问时间;读取但不修改文件内容 |
在文件存在的情况下,touch命令默认会修改文件的访问时间和修改时间。但它提供了“-a”选项和“-m”选项,分别只修改访问时间或修改时间。
1 | touch -a file.txt |
“-a”选项,只改变访问时间。
1 | touch -m file.txt |
“-m”选项,只改变修改时间。
除了可以指定修改哪种时间属性,还可以指定时间属性的值(默认是当前时间)。
指定时间属性的值有两种选项:”-t“选项和”-d“选项。效果一样,只是值的格式不一样而已。
“-t”选项的时间格式为:
1 | [[CC]YY]MMDDhhmm[.ss] |
“-d”选项相对“-t”选项,时间格式会多一些。图片中是其中的一种,其他格式这里不再赘述,有兴趣的校友可自行查询资料。
touch命令还有个“-c”选项。在默认情况下,如果文件不存在,touch命令会新建空文件;加了“-c”选项之后,就不会创建文件。
知识总结
1 | 语法: |
免责声明
安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。