在 Linux 系统中,文件管理是指对文件和目录进行创建、修改、组织以及访问控制等一系列操作。Linux 遵循“一切皆文件”的设计哲学——不仅普通数据是文件,连硬件设备(如硬盘、键盘)和系统配置也被抽象为文件形式,从而实现统一的 I/O 接口。
Linux 将文件分为以下三类,每类在系统中承担特定角色:
最常见的文件类型,用于存储用户数据。
包括:文本文件(.txt)、脚本(.sh)、程序二进制文件、图片、文档等。
可通过 touch 命令创建空文件。
内容可以是:
ASCII 文本(人类可读)
二进制数据(如可执行程序)
结构化数据(如数据库文件)
普通文件构成了 Linux 系统中绝大多数的文件实体。
本质上是特殊类型的文件,用于组织其他文件和子目录,形成树状层级结构。
类似于 Windows 中的“文件夹”。
使用 mkdir 命令创建新目录。
关键系统目录包括:
位于 /dev/ 目录下,代表物理或虚拟硬件设备。
允许系统通过标准文件操作(读 / 写)与硬件交互。
例如:
/dev/sda:第一块 SATA 硬盘
/dev/tty:终端设备
/dev/null:丢弃所有写入数据的“黑洞”设备
这种设计使程序员无需了解硬件细节,只需像操作普通文件一样即可控制设备。
以下是 Linux 中最核心的文件操作命令及其用途:
显示当前或指定目录的内容。
$ ls默认列出文件和子目录名称。
颜色编码辅助识别类型:
蓝色:目录
白色 / 绿色:普通文件
闪烁红色:损坏或特殊文件(依终端配色而定)
详细列表模式
$ ls -l输出示例:
-rw-r--r-- 1 alice users 1024 Dec 6 10:00 report.txt
drwxr-xr-x 2 alice users 4096 Dec 5 14:30 projects/各字段含义:
此信息对理解文件安全性和访问控制至关重要。
创建一个空文件,或更新现有文件的时间戳。
$ touch notes.txt若 notes.txt 不存在 → 创建空文件。
若已存在 → 不改变内容,仅更新“最后修改时间”。
常用于初始化日志文件或占位符。
将整个文件内容输出到终端。
$ cat config.ini适合查看短小文件。
对于大文件,建议使用分页工具:
more filename:逐页向下翻
less filename:支持上下滚动(更强大)
复制文件或目录。
$ cp source.txt /backup/将 source.txt 复制到 /backup/ 目录下,保留原名。
若目标路径包含新文件名,则重命名:
$ cp old.txt new.txt注意:
cp默认不复制目录内容,需加-r参数递归复制整个目录。
既可用于移动文件,也可用于重命名。
移动文件
$ mv document.pdf /archive/将 document.pdf 从当前位置移至 /archive/。
重命名文件
$ mv old_name.log new_name.log文件内容不变,仅更改名称。
mv是原子操作,在同一文件系统内非常高效。
永久删除文件。
$ rm temp.txt无法轻易恢复!Linux 默认无“回收站”机制。
安全提示:可先用 ls 确认文件名,避免误删。
删除目录需加 -r(递归):
$ rm -r old_project/强烈建议重要操作前备份,或使用
rm -i启用交互确认模式。
Linux 通过权限和所有权机制保障文件安全:
每个文件有三个角色:
Owner(所有者)
Group(所属组)
Others(其他用户)
每个角色拥有三种权限:
r(读)
w(写)
x(执行)
使用 chmod 修改权限,chown 修改所有者。
示例:
$ chmod 755 script.sh # 所有者可读写执行,组和其他人可读执行
$ chown alice:users data.csv为什么 Linux 要把硬件设备也表示为文件?这种设计有什么优势?
执行 rm * 命令前,应如何确保不会误删重要文件?
如果你运行 ls -l 看到某文件权限为 -rwxr-x---,请问:
文件所有者有哪些权限?
同组用户能修改该文件吗?
其他用户能否执行它?