Linux mkdir命令:创建目录(文件夹)
mkdir 命令,是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用。
[root@localhost ~]# mkdir [-mp] 目录名 |
- -p 选项递归创建所有目录,以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/test 以及 /home/test/demo。
- -m 选项用于手动配置所创建目录的权限,而不再使用默认权限;比如:通过设定 711 权限值来给予新的目录 drwx--x--x 的权限。
Linux rmdir命令:删除空目录
rmdir(remove empty directories 的缩写)命令用于删除空目录。
[root@localhost ~]# rmdir [-p] 目录名 |
- -p选项用于递归删除空目录。
命令执行成功与否,取决于要删除目录是否是空目录,因为rmdir命令只能删除空目录。
rmdir命令可以使用-p选项递归删除目录。注意:此方式先删除最低一层的目录,然后做成删除上级目录,删除时也需要保证各级目录是空目录。
rmdir 命令的作用十分有限,因为只能刪除空目录,所以一旦目录中有内容,就会报错。这个命令比较"笨",所以并不常用。
Linux touch命令:创建文件及修改文件时间戳
知道了如何在 Linux 系统中创建目录,接下来想在这些目录中创建一些文件,可以使用 touch 命令。
touch 命令不光可以用来创建文件(当指定操作文件不存在时,该命令会在当前位置建立一个空文件),此命令更重要的功能是修改文件的时间参数(但当文件存在时,会修改此文件的时间参数)。
[root@localhost ~]# touch [选项] 文件名 |
-a | 只修改文件的访问时间 |
-c | 仅修改文件的时间参数(3 个时间参数都改变),如果文件不存在,则不建立新文件 |
-d | 后面可以跟欲修订的日期,而不用当前的日期,即把文件的 atime 和 mtime 时间改为指定的时间 |
-m | 只修改文件的数据修改时间 |
-t | 命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为 YYMMDDhhmm. |
Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:
访问时间(Access Time,简称 atime) | 只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。 |
数据修改时间(Modify Time,简称 mtime) | 当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。 |
状态修改时间(Change Time,简称 ctime) | 当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。 |
1、touch 命令创建文件,修改文件的访问时间
[root@localhost ~]#touch bols [root@localhost ~]#ll --time=atime bols |
2、修改 bols 文件的 atime 和 mtime
[root@localhost ~]# touch -d "2017-05-04 15:44" bols [root@localhost ~]# ll bols; ll --time=atime bols; ll --time=ctime bols -rw-r--r-- 1 root root 0 May 4 2017 bols -rw-r--r-- 1 root root 0 May 4 2017 bols -rw-r--r-- 1 root root 0 Sep 25 21:40 bols #ctime不会变为设定时间,但更新为当前服务器的时间 |
Linux ln命令:建立链接(硬链接和软链接)文件
要想了解ln命令,必须先知道ext文件系统是如何工作的。ext4 文件系统会把分区主要分为两大部分:小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。
inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。大家如果仔细查看,就会发现 inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。
block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。
由此,我们可以知道以下 2 个重要的信息:
- 每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
- 如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块。
ln 命令用于给文件创建链接,根据 Linux 系统存储文件的特点,链接的方式分为以下 2 种:
- 软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
- 硬链接:文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。(并没有创建一个新的文件)
ln命令的基本格式如下:
[root@localhost ~]# ln [选项] 源文件 目标文件 |
选项:
- -s:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件;
- -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件。
创建硬链接:
[root@localhost ~]# touch cangls [root@localhost ~]# ln /root/cangls /tmp #建立硬链接文件,目标文件没有写文件名,会和原名一致 #也就是/tmp/cangls 是硬链接文件 |
创建软链接:
[root@localhost ~]# touch bols [root@localhost ~]# In -s /root/bols /tmp #建立软链接文件 |
注意:软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。