入门:文件系统抽象与基础命令
基于 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=4、w=2、x=1,相加得一组数字。755=rwx(7) +r-x(5) +r-x(5),常见于可执行脚本与目录。 chmod改权限:- 数字:
chmod 755 deploy.sh、chmod 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 f、chown alice:dev f(同时改属主属组)、chown -R alice dir(递归)。umask:新建文件的默认权限掩码。umask 022→ 新文件666-022=644、新目录777-022=755。
六、链接:硬链接与软链接
ln 创建链接,分两种,本质完全不同:
| 硬链接(Hard Link) | 软链接(Symbolic Link / Symlink) | |
|---|---|---|
| 命令 | ln a b | ln -s a b |
| 本质 | 同一个 inode 的多个文件名 | 存了目标路径的特殊文件 |
| 删原文件 | 硬链接仍可读(inode 引用计数减 1) | 软链接失效(悬空链接 dangling) |
| 跨文件系统 | ❌ 不行(inode 是分区内的) | ✅ 可以(只是路径字符串) |
| 链接目录 | ❌ 不允许(除 root 外,避免环) | ✅ 可以 |
| 用途 | 备份/防止误删、节省空间 | 快捷方式、版本切换(node → node-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 等环境工具)。