Skip to content

入门:文件系统抽象与基础命令

基于 Linux 文件系统与核心命令 · 核于 2026-08

速查

  • 一切皆文件:Linux 把普通文件、目录、设备(/dev/sda)、管道、套接字都用统一的文件接口(open/read/write/close)封装——这是 Unix 哲学的根基。
  • 单根目录树:Linux 没有 C 盘 D 盘,只有一个根 /,所有分区/设备挂载到目录树的某个节点(/mnt//media)。绝对路径从 / 开始,相对路径从当前目录开始。
  • 核心目录/bin(基础命令)、/etc(配置)、/home(用户家目录)、/var(日志/可变数据)、/usr(用户程序)、/dev(设备文件)、/proc(进程虚拟文件)。
  • 文件操作七件套ls(列目录)、cd(切换)、cp(复制)、mv(移动/改名)、rm(删除)、mkdir(建目录)、touch(建空文件/改时间戳)。
  • 查找三剑客find(按条件遍历目录树,最灵活)、locate(查预建索引,快但需 updatedb)、which/whereis(查可执行文件位置)。
  • 权限模型:每个文件有属主/属组/其他人三组,每组 r/w/x(读/写/执行)。数字表示:r=4/w=2/x=1,如 755 = 属主 rwx(7) + 属组 rx(5) + 其他 rx(5)。目录的 x 表示「能否进入」(cd 进去)。
  • chmod:改权限(数字 chmod 755 f 或符号 chmod u+x f);chown:改属主/属组(chown user:group f);umask:新建文件的默认权限掩码(如 022 → 新文件 644、新目录 755)。
  • 链接硬链接ln a b)是同一个 inode 的多个名字,删原文件硬链接仍可读;软链接/符号链接ln -s a b)是存了路径的快捷方式,原文件删了软链接即失效(悬空)。
  • 文本编辑器Vim(模式编辑:i 进入插入、Esc 回普通、:wq 保存退出、:q! 强退);Nano(无模式,底部 ^O 保存、^X 退出,新手友好)。
  • 环境辅助sudo(以 root 执行单条命令)、df -h(磁盘整体用量)、du -sh dir(目录大小)、export VAR=v(设环境变量)、source f(在当前 shell 执行脚本)、alias ll='ls -la'(命令别名)。
  • 进阶顺序文件操作详解编辑器与环境参考

一、一切皆文件:Linux 的核心抽象

Linux(与所有 Unix 系系统)有一条贯穿始终的设计哲学:一切皆文件(everything is a file)。这不仅指文本文件、图片这些「普通文件」,还包括:

  • 目录:本质是记录「文件名 → inode」映射的特殊文件。
  • 设备:硬盘 /dev/sda、终端 /dev/tty、空设备 /dev/null(丢弃写入)、/dev/zero(读出无穷零)。
  • 管道:进程间通信的内存缓冲区,也用文件接口读写。
  • 套接字:网络通信端点,也表现为文件描述符。

这种统一抽象的威力在于组合:你可以用同一套 cat/grep/> 处理文件、设备、甚至网络流。例如 cat /dev/null > log.txt 清空日志、echo hello > /dev/tcp/host/80 临时探测端口。

二、目录树与路径

Linux 是单根目录树——只有一个根 /,没有 Windows 的盘符概念。所有分区、U 盘、网络盘都挂载到目录树的某个节点上。

/                 ← 根目录(绝对路径起点)
├── bin           ← 基础命令(ls/cp/cat,符号链接到 /usr/bin)
├── etc           ← 系统配置文件(nginx.conf、hosts、passwd)
├── home          ← 普通用户家目录(/home/alice、/home/bob)
├── usr           ← 用户程序与库(/usr/bin、/usr/lib、/usr/local)
├── var           ← 可变数据(/var/log 日志、/var/www 网站文件)
├── dev           ← 设备文件(/dev/sda 硬盘、/dev/null)
├── proc          ← 进程与内核的虚拟文件(/proc/cpuinfo)
├── tmp           ← 临时文件(重启清空)
└── root          ← root 用户的家目录
  • 绝对路径:从 / 开始,如 /var/log/nginx/access.log,任何位置都能用。
  • 相对路径:从当前目录开始,. 表示当前目录、.. 表示上一级、~ 表示家目录。
  • cd 切换目录:cd /var/log(绝对)、cd ..(上级)、cd ~(回家)、cd -(回到上次目录)。

三、文件操作命令

日常最高频的七条文件命令:

命令作用高频用法
ls列出目录ls -l(详情)/-a(含隐藏)/-h(人类可读大小)/-t(按时间)
cd切换目录cd dir / cd ~ / cd -
cp复制cp a b / cp -r dir1 dir2(递归复制目录)
mv移动/改名mv a b(改名)/mv f.txt dir/(移动)
rm删除rm f /rm -r dir(递归)/-f(强删不问);rm -rf 极危险
mkdir建目录mkdir d /mkdir -p a/b/c(连父目录一起建)
touch建空文件/改时间戳touch f.txt(不存在则建,存在则更新修改时间)
  • cp 默认不复制目录,必须加 -r(recursive),否则报错「omitting directory」。
  • mv 既是改名也是移动——同目录下 mv 是改名,跨目录是移动,本质都是改路径名。mv 跨分区时会真实拷贝+删除(因为 inode 体系不同),同分区是瞬时的(只改目录项)。
  • rm 没有回收站:删了就没了(除非文件系统支持快照/有备份)。rm -rf / 能删整个系统,是著名的灾难命令。

四、find:按条件遍历目录

find 是最强大的查找工具,按文件名/类型/大小/时间/权限等条件遍历目录树:

find /var/log -name "*.log"          # 按文件名(支持通配符)
find . -type f -mtime -7             # 7 天内修改过的普通文件
find /tmp -size +100M                # 大于 100MB 的文件
find . -type d -empty                # 空目录
find . -name "*.tmp" -delete         # 找到后直接删除
find . -type f -exec chmod 644 {} \; # 对每个结果执行命令
  • -name 大小写敏感,-iname 忽略大小写;通配符 *(任意)、?(单字符)。
  • -type f(普通文件)/d(目录)/l(符号链接)。
  • 时间:-mtime -7(7 天内修改)/-mmin +30(30 分钟前修改);- 表示「内」,+ 表示「前」。
  • -exec ... {} \; 对每个结果执行命令,{} 是占位符,\; 结束。批量操作利器。
  • find实时遍历(慢但准确);locate 查预建索引(快但可能过时,需 updatedb)。

五、权限模型:rwx 与 chmod/chown

每个文件有三组权限,对应属主(user)/属组(group)/其他人(others),每组三位 r(读)/w(写)/x(执行)

$ ls -l deploy.sh
-rwxr-xr-- 1 alice dev 512 Aug 2 10:00 deploy.sh
└┬┘└┬┘└┬┘
 U  G  O      ← 属主 rwx(7) / 属组 r-x(5) / 其他 r--(4)
  • 数字表示r=4w=2x=1,相加得一组数字。755 = rwx(7) + r-x(5) + r-x(5),常见于可执行脚本与目录。
  • chmod 改权限
    • 数字:chmod 755 deploy.shchmod 644 config.txt(只读配置常见)。
    • 符号:chmod u+x f(属主加执行)、chmod g-w f(属组去写)、chmod o=r f(其他人只读)、chmod a+r f(所有人加读)。
    • 递归:chmod -R 755 dir(对目录树全改,谨慎)。
  • 目录的 x:对目录,r 表示能列出内容,x 表示能进入cd 进去并访问其中的文件)。所以目录默认 755(可进可列),不是 644(能列但进不去会报错)。
  • chown 改属主chown alice fchown alice:dev f(同时改属主属组)、chown -R alice dir(递归)。
  • umask:新建文件的默认权限掩码。umask 022 → 新文件 666-022=644、新目录 777-022=755

六、链接:硬链接与软链接

ln 创建链接,分两种,本质完全不同:

硬链接(Hard Link)软链接(Symbolic Link / Symlink)
命令ln a bln -s a b
本质同一个 inode 的多个文件名存了目标路径的特殊文件
删原文件硬链接仍可读(inode 引用计数减 1)软链接失效(悬空链接 dangling)
跨文件系统❌ 不行(inode 是分区内的)✅ 可以(只是路径字符串)
链接目录❌ 不允许(除 root 外,避免环)✅ 可以
用途备份/防止误删、节省空间快捷方式、版本切换(nodenode-v20
  • inode:文件的元数据(大小/权限/数据块位置)存在 inode,文件名只是指向 inode 的目录项。硬链接共享同一个 inode,所以改任何一个,其他都变(因为是同一份数据)。
  • 软链接是「路径指针」,类似 Windows 快捷方式。ls -l 软链接显示 -> 箭头:node -> /usr/bin/node-v20

七、文本编辑器:Vim 与 Nano

服务器上没有图形界面,配置文件只能用终端编辑器改。

Vim(模式编辑器)——四个模式记住就能生存:

  • 普通模式(默认,按 Esc 回到这):移动光标 h/j/k/l(左下上右)、删除 dd(删行)、复制 yy、粘贴 p、撤销 u
  • 插入模式(按 i/a/o 进入):正常打字。i 当前位置插入、a 后一位插入、o 下一行新建插入。
  • 命令模式(普通模式下按 : 进入)::w 保存、:q 退出、:wq 保存退出、:q! 强制不保存退出、/word 搜索、:s/old/new/g 替换。
  • 可视模式(按 v):选中文本块操作。

Nano(无模式,新手友好)——底部菜单栏显示快捷键,^ 表示 Ctrl:

  • ^O 保存、^X 退出、^K 剪切行、^U 粘贴、^W 搜索、^G 帮助。
  • 直接打字即可编辑,没有模式切换的负担。

服务器入门建议:先用 Nano 应急,再逐步学 Vim。Vim 的模式编辑虽然反直觉,但熟练后效率远超 Nano(不用碰鼠标、宏与替换强大),是进阶运维的必备技能。

下一步

理解了文件系统抽象与基础命令后,下一步深入两块——文件操作详解(命令的高频用法与陷阱)与编辑器与环境(Vim 生存与 sudo/df/du/export 等环境工具)。