前言
本章讲解Linux系统当中的文件目录如何管理等基础知识文章目录
一、文件目录的层次结构
管理 Linux 系统中的文件和目录,是学习 Linux 至关重要的一步。
为了方便管理文件和目录,Linux 系统将它们组织成一个以根目录 / 开始的倒置的树状结构。Linux 中的目录,和 Windows 系统中的文件夹类似,不同之处在于,Linux 系统中的目录也被当做文件看待,只是和文本文件类型不同而已。
管理文件和目录,包括对文件和目录的浏览、创建、修改及删除等操作,需借助大量的 Linux 命令,比如 ls、cd、mkdir 等,本章将详细介绍这些 Linux 命令的用法。
二.绝对路径和相对路径

及参数区分大小写
绝对路径一定是由根目录 / 开始写起。
~家目录
. 当前目录
…上级目录
-之前目录
bin/ 当前目录下的bin目录
三、文件命名规则
在 Linux 系统中,一切都是文件,既然是文件,就必须要有文件名。
Linux 系统中,文件和目录的命名规则如下:
- 除了字符/之外,所有的字符都可以使用。但是要注意,如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来。
- 目录名或文件名的长度不能超过 255 个字符。
- 目录名或文件名是区分大小写的。
- Linux 系统并不以文件的扩展名开分区文件类型。例如,dog.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行文件。
表 1 Linux硬件设备文件名称
| 硬件设备 | 文件名称 |
|---|---|
| IDE设备 | /dev/hd[a-d],现在的 IDE设备已经很少见了. |
| SCSI/SATA/U盘 | /dev/sd[a-p],一台主机可以有多块硬盘,因此系统采用 a~p 代表 16 块不同的硬盘。 |
| 软驱 | /dev/fd[0-1] |
| 打印机 | /dev/lp[0-15] |
| 光驱 | /dev/cdrom |
| 鼠标 | /dev/mouse |
| 磁带机 | /dev/st0 或 /dev/ht0 |
四、切换目录(cd)
Linux cd命令用于切换当前工作目录至 dirName(目录参数)。
其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思,. 则是表示目前所在的目录,~用户名 表示切换至指定用户的主目录,… 则表示目前目录位置的上一层目录, -之前的目录。
五、显示当前工作路径(pwd命令)
Linux pwd命令用于显示工作目录。
执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。
例子:查看当前所在目录
#pwd
/root/test #输出结果
六、创建目录mkdir
Linux mkdir命令用于建立名称为 dirName 之子目录。
语法
mkdir [-p|m] dirName
参数说明:
-m 选项用于手动配置所创建目录的权限,而不再使用默认权限。
-p 选项递归创建所有目录,以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/test 以及 /home/test/demo。
使用 -m 选项自定义目录权限。
[root@localhost ~]# mkdir -m 711 test2
[root@localhost ~]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
七、删除空目录(rmdir)
和 mkdir 命令(创建空目录)恰好相反,rmdir(remove empty directories 的缩写)命令用于删除空目录,此命令的基本格式为:-p 选项用于递归删除空目录。
[root@localhost ~]# rmdir [-p] 目录名
这个命令用于删除空目录,用途非常少
八、文件拷贝(cp)
Linux cp命令主要用于复制文件或目录。
语法
cp [options] source dest
或
cp [options] source... directory
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答y时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
例子
使用指令cp将当前目录shu/下的所有文件复制到新目录newshu下,输入如下命令:
$ cp –r shu/ newshu
-p 这个选项会保留源文件的属性,包括所有者、所属组和时间。例如:
[root@localhost ~]# cp -p /zaishu/shu.db /tmp/shu.db
#使用-p选项
[root@localhost ~]# ll /zaishu/shu.db /tmp/shu.db
-rw-r----- root root 2328027 6月 14 02:08 /zaishu/shu.db
-rw-r----- root root 2328027 6月 14 02:08 /tmp/shu.db
#源文件和目标文件的所有属性都一致,包括时间
九、文件删除
语法
rm [options] name…
参数:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
例子
删除文件可以直接使用rm命令,若删除目录则必须配合选项-r,例如:
rm test.txt
rm:是否删除 一般文件 test.txt? y
rm zaishu
rm: 无法删除目录homework: 是一个目录
rm -r zaishu
rm:是否删除 目录 homework? y
删除当前目录下的所有文件及目录,命令行为:
rm -r *
文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
十、移动或重命名文件(mv)
Linux mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。
语法
mv [options] source dest
mv [options] source... directory
参数说明:
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
命令格式 运行结果
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名
例子
将文件 aaa 更名为 bb :
mv aa bb
将shu目录放入log目录中。注意,如果log目录不存在,则该命令将shu改名为log。
mv shu/ log
再如将/www/zaishu下的所有文件和目录移到当前目录下,命令行为:
$ mv /www/zaishu* .
十一、创建文件及修改文件时间戳(touch)
touch 命令不光可以用来创建文件(当指定操作文件不存在时,该命令会在当前位置建立一个空文件),此命令更重要的功能是修改文件的时间参数(当文件存在时,会修改此文件的时间参数)。
Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:
访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。
数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。
touch 命令的基本格式如下:
[root@localhost ~]# touch [选项] 文件名
选项:
-a:只修改文件的访问时间;
-c:仅修改文件的时间参数(3 个时间参数都改变),如果文件不存在,则不建立新文件。
-d:后面可以跟欲修订的日期,而不用当前的日期,即把文件的 atime 和 mtime 时间改为指定的时间。
-m:只修改文件的数据修改时间。
-t:命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为 YYMMDDhhmm。
可以看到,touch 命令可以只修改文件的访问时间,也可以只修改文件的数据修改时间,但是不能只修改文件的状态修改时间。因为,不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之改变(更新为操作当前文件的真正时间)。
【例 1】 touch 命令创建文件。
[root@localhost ~]#touch zaishu
#建立名为 zaishu 的空文件
【例 2】 在例 1 的基础上修改文件的访问时间。
[root@localhost ~]#ll --time=atime zaishu
#查看文件的访问时间
-rw-r--r-- 1 root root 0 Sep 25 21:23 zaishu
#文件上次的访问时间为 9 月 25 号 21:23
[root@localhost ~]#touch zaishu
[root@localhost ~]#ll --time=atime zaishu
-rw-r--r-- 1 root root 0 May 15 16:36 zaishu
#而如果文件已经存在,则也不会报错,只是会修改文件的访问时间。
【例 3】 修改 bols 文件的 atime 和 mtime。
[root@localhost ~]# touch -d 2017-05-04 15:44 zaishu
[root@localhost ~]# ll bols; ll --time=atime bols; ll --time=ctime zaishu
-rw-r--r-- 1 root root 0 May 4 2017 zaishu
-rw-r--r-- 1 root root 0 May 4 2017 zaishu
-rw-r--r-- 1 root root 0 Sep 25 21:40 zaishu
#ctime不会变为设定时间,但更新为当前服务器的时间
总结
以上就是关于文件目录处理的相关操作命令,本文内容比较简单但实用。