深入学习Linux之前,我们需要掌握一些基本的Linux关于磁盘和目录的操作命令,我们可以通过这些基础命令完成对磁盘、目录和文件的基础操作。
Linux系统内置了完善的命令帮助机制,通过在命令后添加--help参数,我们可以快速查阅命令的使用方法和相关参数。例如,执行ls --help命令就能查看ls命令的详细用法说明,包括各种参数的功能解释。
下图通过执行ls --help命令,系统列出了ls命令的用法及相关参数。因此本课仅是简单介绍命令的使用方法,让大家知道什么情况下需要使用这些命令,关于命令的详细用法还需要查看命令的帮助文档。

一、磁盘操作命令
下表是查看磁盘信息的常用命令。
命令 | 用途 | 实用示例 |
lsblk
| 查看系统块设备 | lsblk
|
df -h
| 查看磁盘空间及使用情况 | df -hdf -h /home(查看指定目录所在分区)
|
du -sh [路径]
| 统计目录或文件占用空间大小 | du -sh /var/log
|
fdisk -l
| 显示磁盘分区表信息 | sudo fdisk -l /dev/sda
|
lsblk 命令
lsblk命令用于查看系统块设备信息。在Linux系统中,块设备(Block Device)是指操作系统可以按固定大小的块(如512KB)来读写数据的设备,如硬盘、固态盘、U盘等都属于块设备。
直接在终端或控制台输入下面的命令(自己输入命令,不要复制和粘贴):
对于不需要管理员权限的命令,命令前面可以省略sudo。执行命令后,会显示如下图所示的内容。
从上图可以看出,系统中存在很多的块设备,其实大多数块设备是回环设备,即以loop命名的设备,这些设备不是真正的物理设备,而是操作系统将一个文件虚拟成一个块设备,对应 Snap 安装的应用,容量从几 KB 到几百 MB 不等,是 Snap 应用的运行时镜像。
真正的物理设备是以字符S开头的设备,设备sda表示一个真正的物理磁盘,磁盘空间20G,因为当前Ubuntu系统运行在VMware虚拟机上,因此这是VMware分配的虚拟磁盘。
设备sda下面有两个分区:sda1是磁盘的第1个分区,分区空间为1M,是系统的 BIOS Boot 分区;sda2是磁盘的第2个分区,分区空间为20G,几乎占用了磁盘全部空间,该分区挂载到系统根目录, 是Ubuntu 系统的根分区,系统、用户数据都存放在这里。
lsblk命令后面可以添加参数,添加这些参数的本质是过滤输出信息、定制输出格式,可帮助你快速定位需要查看的信息。
df命令
df命令用来查看磁盘空间及使用情况,df命令的默认输出是以KB为单位来显示磁盘空间信息,显示的数字比较大,不直观。在命令后面添加参数 -h,会自动将单位换算为 K(千字节)、M(兆字节)、G(吉字节)等,便于理解。
直接在终端或控制台输入下面的命令(自己输入命令,不要复制和粘贴):
执行命令后,会显示如下图所示的内容。

在Linux系统中,设备都被映射为文件,物理磁盘和逻辑磁盘也会被映射为文件,因此图中的第1列称为文件系统。其中tmpfs是 Linux 基于内存的临时文件系统,数据存放在 RAM 中,断电或重启后自动清空,用于存放临时运行数据。
/dev/sda2是磁盘的第2个分区,对应之前 lsblk命令里的 sda2 设备,大小为20G,已用15G,可用还剩余3.9G,空间使用率80%, 已经达到Linux系统预警阈值,Linux 系统通常建议根分区使用率不超过 80%,避免系统因空间不足崩溃。挂载点为系统根目录。
若需要查看某一目录的空间及使用情况,可以在后面添加目录路径参数,如下面的命令会查看/home目录的空间及使用情况。
du命令
du命令主要用来统计目录或文件占用磁盘工具的大小。当du命令无附加参数时,会递归遍历当前所有子目录,逐个显示每个子文件夹占用的磁盘空间大小(单位为字节),最后叠加统计,一层一层汇总。命令执行结果如下图所示.

在du命令后面添加-sh参数,可以直接查看指定文件夹的大小,不显示子文件夹细节,单位自动以KB/MB/GB显示。
直接在终端或控制台输入下面的命令(自己输入命令,不要复制和粘贴):
执行命令后,会显示如下图所示的内容。

上图的第一个命令显示根目录占用的磁盘空间为2.2G,第二个命令显示根目录下的software目录占用的磁盘空间为500K。这两条命令都没有显示子文件夹细节,而是对子文件夹占用的磁盘空间进行了汇总。
fdisk 命令
fdisk命令是linux磁盘分区管理工具,用于查看计算机所有硬盘分区表,并能完成新建、删除、查看、修改、调整硬盘分区,管理分区类型、激活分区等功能。本节课主要使用fdisk命令来了解磁盘分区信息。磁盘分区管理工具的详细使用,我们将拿出单独的一节课来讲解。
直接在终端或控制台输入下面的命令(自己输入命令,不要复制和粘贴):
该命令查看计算机第一块硬盘的分区信息,在Linux系统里,第一块硬盘的名称是sda、第二块硬盘的名称是sdb、……、以此类推。在Linux系统中,dev是设备目录,所有硬件(硬盘、U 盘、键盘、网卡)都当成文件放在 /dev 下面,sda 是第一块硬盘。
执行命令后,会显示如下图所示的内容。

上图显示/dev/sda是虚拟机里的第一块虚拟硬盘,硬盘容量是20GB,每个扇区大小是 512 字节,磁盘用的是GPT分区表。
sda磁盘有两个分区:sda1和sda2。sda1是BIOS启动分区,用于存储BIOS程序,分区位置从2048扇区起始,到4095扇区结束,大小为1M。sda2是Linux根分区,系统、软件、用户数据都存在这里,扇区起始位置为4096,结束位置为41936896,大小为20G。
二、目录操作命令
下表是查看目录信息的常用命令。
命令 | 用途 | 实用示例 |
ls | 列出目录内容 | ls# 简单列出 ls -l# 详细信息 ls -a# 显示隐藏文件 ls -lh# 显示文件大小(KB/MB) ls -lt# 按修改时间排序 ls -la# 所有文件 + 详细信息 |
pwd | 输出当前工作目录绝对路径 | pwd |
find | 搜素目录或文件 | # 查找目录 find /path -type d -name "dir*" # 查找文件 find /path -type f -name "*.log" |
cd | 切换目录 | #切换到根目录下的home目录 cd /home |
mkdir | 创建目录 | #在当前目录下创建temp目录 mkdirtemp |
rm | 删除文件或目录 | #递归删除temp目录及其下面的子目录和文件 rm -r temp |
ls命令
ls命令用来列出指定目录里的文件及文件夹清单,ls默认输出当前目录的清单。通过ls 命令不仅可以查看文件夹包含的文件,而且可以查看文件权限、大小、更改时间等等。
实例-1 列出当前目录下的文件夹及文件

不带任何参数的ls命令仅列出当前目录下的文件夹和文件名称,不会显示文件类型、大小、修改日期和时间、权限等信息。
实例-2 列出文件夹及文件详细信息

可以看到,用ls -l命令查看某一个目录会得到一个含7列的列表。
第1列是文件夹或文件的属性。文件属性共有10个字符组成,以第一行为例:

第1位:文件类型。
d:directory 目录
-:普通文件
l:软链接(快捷方式)
b:块设备(硬盘等)
c:字符设备
s:socket 文件
p:管道文件
第2~4位:rwx文件权限。
r:read 若是文件,该文件可读;若是目录,该目录可使用ls命令查看目录内容。
w:write 若是文件,该文件可写;若是目录,该目录允许在目录里新建、删除、重命名文件。
x:execute 若是文件,该文件可执行;若是目录,该目录可进入(可以 cd 进入这个目录)。
第5~7位:r-x同组用户权限。r:可读;-:不可写;x:可进入。
同组用户只能看、能进入,不能修改 / 删除。
第8~10位:r-x其他用户权限。r:可读;-:不可写;x:可进入。
所有人都能看、能进入,但不能修改。
第2列:如果是一个文件,该列的数值表示这个文件所具有的硬链接数;如果是一个目录,则该列表示所含子目录的个数。
第3列:文件(目录)拥有者。
第4列:文件(目录)拥有者所在的组。
第5列:文件所占用的空间(以字节为单位)。
第6列:文件(目录)最近访问(修改)时间。
第7列:文件(目录)名称。
find命令
find命令是文件搜素神器,它能递归搜索指定目录下的文件,基本命令结构如下:
find [搜索路径] [匹配条件] [执行动作]
搜索路径:指定从哪开始搜,比如`.`是当前目录,`/`就是从根目录搜起。
匹配条件:定义搜索规则,文件名、类型、大小都能筛。
执行动作:对执行结果进行操作,默认是输出符合搜索条件的文件路径。
实例-1 查找指定的文件

上述命令是在当前目录下递归查找名称为cmyk.png的文件。参数-name指定find使用文件名称来筛选,文件名称需要附加在-name参数后面,文件名称是区分大小写的,若不区分大小写,可以使用-iname参数。
cd命令
在什么情况下使用cd命令呢?当需要切换目录时,就需要使用cd命令。
#切换到data目录,目录路径为绝对路径cd /home/user/data # 切换到当前目录下的test目录cd test# 返回上一级目录cd ..# 返回上两级目录cd ../..# 回到系统根目录cd /
mkdir命令
当需要创建一个新的目录时,就要用到mkdir命令。
# 在当前目录下,创建一个新的目录testmkdir test# 在当前目录下,递归创建多层目录/a/b/cmkdir -p a/b/c# 在当前目录下,一次创建多个目录mkdir dir1 dir2 dir3
rm命令
rm是删除目录和文件的命令,当需要删除目录和文件时,就要使用rm命令。
# 在当前目录下,删除cmyk.png文件rm cmyk.png# 递归删除目录,递归删除/home/test目录及其所有的子目录和文件rm -r /home/test# 递归删除目录,什么都不问,直接删光,慎用下面的命令rm -r /home/test
三、本节总结
要查看计算机有哪些存储设备,就使用lsblk命令,它可以列出所有的存储设备。df命令可以查看磁盘空间使用情况,若需要查看目录或文件占用磁盘空间大小,就可以使用du命令。
cd命令可以切换目录,mkdir命令可以创建目录,rm命令用来删除目录,ls命令可以列出目录下的所有文件和子目录,find命令是搜索神器,可以快速定位你需要查找的目录和文件。