1.4 基本文件操作命令
预计阅读时间:19 分钟
📖 目录
学习目标
学完本章后,你将能够:
- 理解 Linux "一切皆文件"的设计哲学和 FHS 目录结构标准
- 熟练使用
ls、cd、pwd浏览文件系统 - 用
mkdir、touch创建文件和目录,用rm、rmdir删除 - 用
cp和mv复制和移动/重命名文件 - 使用通配符(
*、?、[]、{})批量操作文件 - 区分硬链接和符号链接的原理与用途
核心知识
- FHS(Filesystem Hierarchy Standard)——Linux 文件系统目录结构标准,定义了
/、/home、/etc、/var等核心目录的用途 - 绝对路径 vs 相对路径——绝对路径以
/开头(如/home/alice/docs),相对路径相对于当前目录(如docs或../docs) - 当前目录(.)和父目录(..)——每个目录中都有这两个特殊条目。
.指向自己,..指向上一级 - 通配符(Globbing)——Shell 在运行命令前对文件名模式进行展开,
*匹配任意字符,?匹配单个字符 - 链接(Link)——硬链接(Hard Link)是文件的另一个名称,共享同一个 inode;符号链接(Symbolic Link / Symlink)是指向另一个文件路径的"快捷方式"
- inode——文件系统元数据结构,存储文件的权限、所有者、大小、时间戳等信息,不包含文件名
知识关联
- 前置知识:1.3:第一次进入命令行 学习了如何打开终端和运行命令,本章是第一个大量实操的章节
- 后续影响:文件操作是 Linux 一切工作的基础——安装软件(1.7:用户与权限管理)、编辑配置(2.2:配置文件与系统设置)、Shell 脚本(3.11:SSL/TLS 证书管理+)都离不开本章命令
- 配套技术:1.7:用户与权限管理 会深入学习文件权限(rwx),1.6:文件查看与文本编辑 学习查看文件内容(cat、less、head、tail)
- 在整个体系中的位置:如果说 Linux 是一座城市,文件系统就是它的街道网络——不认路就寸步难行
原理讲解
1. "一切皆文件"——Linux 最根本的抽象哲学
在 Linux 中,"文件"不仅仅是你双击打开的文档。系统将几乎所有东西都抽象为文件接口:
| 类型 | 实际是什么 | 文件路径例子 |
|---|---|---|
| 普通文件 | 文本、图片、二进制程序等数据 | /home/alice/report.txt |
| 目录 | 包含其他文件名的"容器" | /home/alice/ |
| 设备文件 | 块设备(磁盘)或字符设备(键盘、串口) | /dev/sda、/dev/tty1 |
| 进程信息 | 运行中进程的状态和数据(虚拟文件系统) | /proc/cpuinfo、/proc/1234/ |
| 网络套接字 | 网络通信端点 | 通过 ss -l 查看,不直接是磁盘文件 |
| 管道 | 进程间通信通道 | 用 | 在命令间建立 |
这意味着你可以用读写普通文件的方式——open()、read()、write()——来操作打印机、磁盘、网络连接等多达数百种硬件设备。Linux 内核在底层完成了"不同硬件 → 统一文件接口"的转换。
2. FHS——Linux 的目录结构标准
Linux 遵循 Filesystem Hierarchy Standard(FHS),规定了主要目录的位置和用途。以下是必须了解的核心目录:
/ 根目录。Linux 文件系统的起点,所有路径都从这里开始
├── bin/ → /usr/bin (最近发行版的符号链接)
├── boot/ GRUB 和 Linux 内核文件(vmlinuz、initrd)所在地
├── dev/ 设备文件。包含磁盘(sda)、终端(tty)、随机数生成器(random)等
├── etc/ 系统配置文件。纯文本,可直接用编辑器修改(如 apt sources.list)
├── home/ 用户家目录。每个用户一个子目录(如 /home/alice)
├── proc/ 进程文件系统(虚拟)。内核和进程信息的实时窗口(CPU、内存、网络)
├── root/ root 用户的家目录(不是 /home/root!)
├── usr/ 用户软件资源。第二层"根",包含 bin/、lib/、share/ 等
│ ├── bin/ 绝大多数用户命令(ls、cp、cat、python3)
│ ├── lib/ 系统库文件(.so 动态链接库)
│ └── local/ 用户手动编译安装的软件
├── var/ 可变数据。日志(log/)、缓存(cache/)、数据库(lib/)
├── tmp/ 临时文件,任何人可写。重启后可能被清理
├── mnt/ 临时挂载点(手动挂载 U 盘等)
└── media/ 可移动介质自动挂载点(光盘、U盘)
为什么 Linux 采用这样的目录结构?——FHS 背后的设计哲学
FHS 的目录结构不是随意堆砌,而是基于 Unix 的"文件系统层次化"哲学,核心原则是按用途分类、按变化频率分层、按共享需求隔离:
- /bin 和 /usr/bin 的历史演变:早期 Unix 中,/bin 存放启动时必需的基本命令(ls、cp),/usr/bin 存放用户级命令。随着磁盘空间增长,/bin 逐渐变成了 /usr/bin 的符号链接。现代 systemd 发行版(如 Fedora 30+)已经合并了这两个目录。这个演变体现了"简化 vs 兼容"的工程权衡。
- /etc 放配置、/var 放可变数据:这种分离的关键价值在于备份与恢复的便利性。你可以单独备份 /etc(系统配置)和 /home(用户数据),而无需备份整个系统。/var 被单独隔离是因为日志和缓存文件频繁变化,如果和系统文件放在同一个分区,日志暴增可能撑满磁盘导致系统崩溃——独立分区可以限制这种风险。
- /proc 是虚拟文件系统:它不在磁盘上,而是内核在内存中动态生成的。通过读取 /proc/cpuinfo、/proc/meminfo,用户空间程序可以获取内核和硬件信息,无需特殊的系统调用。这是"一切皆文件"哲学的极致体现。
- /tmp 的 Sticky Bit:/tmp 目录设置了 Sticky Bit(权限末尾的 t),这意味着任何用户都可以在其中创建文件,但只有文件的所有者才能删除自己的文件。这解决了公共临时目录中的安全问题——没有 Sticky Bit,恶意用户可以删除其他人的临时文件。
3. 绝对路径与相对路径
Linux 中有两种定位文件的方式:
- 绝对路径(Absolute Path):从根目录
/开始的完整路径。例如/home/alice/Documents/report.txt。无论你当前在哪,绝对路径都指向同一个文件。 - 相对路径(Relative Path):从当前目录开始的路径。使用
.表示当前目录,..表示上一级目录。例如Documents/report.txt(如果当前在/home/alice)。
# 假设当前在 /home/alice
cd Documents # 相对路径:进入 /home/alice/Documents
# 输出: (无输出——cd 成功时默认静默)
cd /var/log # 绝对路径:进入 /var/log(无论当前在哪)
# 输出: (无输出——cd 成功时默认静默)
# 特殊路径
cd ~ # 回自己的家目录
# 输出: (无输出)
cd ~otheruser # 去 otheruser 的家目录(如果有权限)
# 输出: (无输出)
cd - # 回到上一个工作目录(超实用!)
# 输出: /home/alice
cd .. # 上一级
# 输出: (无输出)
cd ../.. # 上两级
# 输出: (无输出)
4. 文件类型——ls -l 的第一列告诉你的
当你运行 ls -l,输出最左侧的10个字符表示文件类型和权限。第一个字符表示文件类型:
-rwxr-xr-x 1 alice alice 12345 Jul 30 10:00 script.sh
^
└── 第一个字符:文件类型
| 字符 | 文件类型 | 例子 |
|---|---|---|
- | 普通文件 | 文本、图片、二进制程序 |
d | 目录 | /home、/etc |
l | 符号链接 | /usr/bin 在很多发行版中是符号链接 |
b | 块设备 | 磁盘 /dev/sda |
c | 字符设备 | 终端 /dev/tty1 |
s | Unix 套接字 | 进程间通信 |
p | 命名管道 | 进程间通信 |
# 实操:查看文件类型
ls -l /dev/sda # 块设备
# 输出: brw-rw---- 1 root disk 8, 0 7月 30 14:30 /dev/sda
ls -l /dev/tty # 字符设备
# 输出: crw-rw-rw- 1 root tty 5, 0 7月 30 14:30 /dev/tty
ls -ld /home # 目录
# 输出: drwxr-xr-x 4 root root 4096 7月 30 14:30 /home
ls -l /bin # 可能是符号链接(指向 /usr/bin)
# 输出: lrwxrwxrwx 1 root root 7 7月 30 14:30 /bin -> usr/bin
5. 链接——硬链接与符号链接
Linux 有两种"链接":
硬链接(Hard Link):为同一个文件内容(inode)创建另一个名称。删除一个硬链接不影响其他硬链接,只有当所有硬链接都被删除时文件才被真正删除。硬链接不能跨越文件系统,也不能链接目录。
符号链接(Symbolic Link / Symlink):一个特殊文件,内容是指向另一个文件或目录的路径。类似于 Windows 的"快捷方式"。如果原文件被删除,符号链接会"悬空"(指向一个不存在的路径)。
# 创建硬链接
ln original.txt hardlink.txt
# 输出: (无输出——成功时默认静默)
ls -li *.txt # -i 显示 inode 号,两个文件 inode 相同
# 输出: 1234567 -rw-r--r-- 2 alice alice 0 7月 30 14:30 hardlink.txt
# 输出: 1234567 -rw-r--r-- 2 alice alice 0 7月 30 14:30 original.txt
# 创建符号链接
ln -s original.txt symlink.txt
# 输出: (无输出——成功时默认静默)
ls -l *.txt # 符号链接会显示 -> 指向的目标
# 输出: -rw-r--r-- 2 alice alice 0 7月 30 14:30 hardlink.txt
# 输出: -rw-r--r-- 2 alice alice 0 7月 30 14:30 original.txt
# 输出: lrwxrwxrwx 1 alice alice 12 7月 30 14:30 symlink.txt -> original.txt
关键区别:
| 特性 | 硬链接 | 符号链接 |
|---|---|---|
| 共享 inode | 是(与原文件同一个 inode) | 否(自身有独立 inode) |
| 跨文件系统 | 否 | 是 |
| 链接目录 | 否 | 是 |
| 原文件删除后 | 仍然可用 | 悬空(broken link) |
| 检查方式 | ls -li 看 inode 号 | ls -l 显示 -> |
硬链接 vs 软链接——为什么需要两种链接?
两种链接解决的是不同的问题:
- 硬链接的核心价值是文件去重与可靠性。因为多个硬链接共享同一个 inode,删除其中一个链接不会丢失数据——只有当最后一个链接被删除时,文件才被真正删除。这在备份场景中非常有用:你可以为重要文件创建硬链接,这样即使误删了原文件名,数据仍然通过其他硬链接可达。硬链接的限制(不能跨文件系统、不能链接目录)是由 inode 的设计决定的——inode 中的块指针指向特定分区内的物理块,跨分区意味着不同的块编号体系。
- 软链接(符号链接)的核心价值是灵活性和兼容性。它本质上是一个包含目标路径的文件,可以指向任何位置——跨文件系统、指向目录、甚至指向不存在的目标。这使得软链接成为"快捷方式"的理想实现:
/usr/bin/python3 -> python3.11就是一个典型的软链接,当 Python 版本升级时,只需修改软链接指向即可,所有调用python3的脚本自动使用新版本。
为什么 rm 不会"真正删除"硬链接文件? 因为 rm 实际上只是删除目录条目(文件名到 inode 的映射),并将 inode 的链接计数减 1。当链接计数降为 0 时,文件系统才释放 inode 和对应的数据块。这就是为什么 ls -li 显示的硬链接数大于 1 时,rm 只是减少了引用计数。
示例代码
打开终端,建立你自己的文件系统操作直觉:
# 练习 1:目录浏览
pwd # 你在哪?
# 输出: /home/alice
ls -la ~ # 家目录里有什么隐藏文件?
# 输出: 总用量 120
# 输出: drwxr-xr-x 22 alice alice 4096 7月 30 14:30 .
# 输出: drwxr-xr-x 4 root root 4096 7月 30 14:30 ..
# 输出: -rw------- 1 alice alice 567 7月 30 14:30 .bashrc
# 输出: drwxr-xr-x 3 alice alice 4096 7月 30 14:30 Desktop
# 输出: drwxr-xr-x 2 alice alice 4096 7月 30 14:30 Documents
# 输出: ...
ls -dl /etc # /etc 本身的属性
# 输出: drwxr-xr-x 148 root root 12288 7月 30 14:30 /etc
# 练习 2:创建目录结构
mkdir -p ~/learn/{docs,images,scripts}
# 输出: (无输出)
ls -R ~/learn # 查看创建的完整结构
# 输出: /home/alice/learn:
# 输出: docs images scripts
# 输出:
# 输出: /home/alice/learn/docs:
# 输出:
# 输出: /home/alice/learn/images:
# 输出:
# 输出: /home/alice/learn/scripts:
# 练习 3:创建文件
touch ~/learn/docs/readme.txt
# 输出: (无输出)
touch ~/learn/docs/notes.txt
# 输出: (无输出)
touch ~/learn/images/photo{1..5}.jpg
# 输出: (无输出)
echo "Hello Linux" > ~/learn/docs/hello.txt
# 输出: (无输出)
ls -la ~/learn/docs/
# 输出: 总用量 16
# 输出: drwxr-xr-x 2 alice alice 4096 7月 30 14:30 .
# 输出: drwxr-xr-x 4 alice alice 4096 7月 30 14:30 ..
# 输出: -rw-r--r-- 1 alice alice 12 7月 30 14:30 hello.txt
# 输出: -rw-r--r-- 1 alice alice 0 7月 30 14:30 notes.txt
# 输出: -rw-r--r-- 1 alice alice 0 7月 30 14:30 readme.txt
# 练习 4:通配符批量操作
ls ~/learn/images/photo*.jpg # 所有 .jpg
# 输出: /home/alice/learn/images/photo1.jpg
# 输出: /home/alice/learn/images/photo2.jpg
# 输出: /home/alice/learn/images/photo3.jpg
# 输出: /home/alice/learn/images/photo4.jpg
# 输出: /home/alice/learn/images/photo5.jpg
ls ~/learn/images/photo?.jpg # photo1.jpg - photo9.jpg
# 输出: photo1.jpg photo2.jpg photo3.jpg photo4.jpg photo5.jpg
ls ~/learn/images/photo[13].jpg # photo1.jpg 和 photo3.jpg
# 输出: photo1.jpg photo3.jpg
ls ~/learn/*/*.txt # 两层通配
# 输出: /home/alice/learn/docs/hello.txt
# 输出: /home/alice/learn/docs/notes.txt
# 输出: /home/alice/learn/docs/readme.txt
# 练习 5:复制与移动
cp ~/learn/docs/readme.txt ~/learn/docs/readme_copy.txt
# 输出: (无输出)
mv ~/learn/docs/notes.txt ~/learn/scripts/
# 输出: (无输出)
ls -R ~/learn/
# 输出: /home/alice/learn:
# 输出: docs images scripts
# 输出:
# 输出: /home/alice/learn/docs:
# 输出: hello.txt readme.txt readme_copy.txt
# 输出:
# 输出: /home/alice/learn/images:
# 输出: photo1.jpg photo2.jpg photo3.jpg photo4.jpg photo5.jpg
# 输出:
# 输出: /home/alice/learn/scripts:
# 输出: notes.txt
# 练习 6:硬链接与符号链接
cd ~/learn
# 输出: (无输出)
echo "original content" > original.txt
# 输出: (无输出)
ln original.txt hard.txt # 硬链接
# 输出: (无输出)
ln -s original.txt sym.txt # 符号链接
# 输出: (无输出)
cat hard.txt # 同样内容
# 输出: original content
cat sym.txt # 同样内容
# 输出: original content
ls -li original.txt hard.txt sym.txt # 看 inode 区别
# 输出: 1234567 -rw-r--r-- 2 alice alice 16 7月 30 14:30 original.txt
# 输出: 1234567 -rw-r--r-- 2 alice alice 16 7月 30 14:30 hard.txt
# 输出: 1234568 lrwxrwxrwx 1 alice alice 12 7月 30 14:30 sym.txt -> original.txt
# 删除原文件后观察差异
rm original.txt
# 输出: (无输出)
cat hard.txt # 还能读!
# 输出: original content
cat sym.txt # 报错:No such file
# 输出: cat: sym.txt: No such file or directory
# 练习 7:安全删除
rm ~/learn/docs/readme_copy.txt # 删文件
# 输出: (无输出)
rmdir ~/learn/docs # 报错:目录非空
# 输出: rmdir: failed to remove '/home/alice/learn/docs': Directory not empty
rm -r ~/learn/docs # 递归删除目录
# 输出: (无输出)
rm -rf ~/learn # ⚠️ 全部删除(本练习安全,因为你刚刚才创建)
# 输出: (无输出)
常见错误
| 错误/误区 | 解决方案 |
|---|---|
| "用 `rm -rf /` 破坏系统" | 永远不要运行 rm -rf /。现代 Linux 需要加 --no-preserve-root 才能执行此操作,但这不是保险箱——rm -rf .* 在家目录有时也能造成巨大破坏。删除前用 ls 确认目标。 |
| "Linux 没有回收站" | 命令行删除的文件直接释放磁盘空间,不会进回收站。误删恢复很困难。建议:重要文件用版本控制(git),rm 之前先 ls 确认。 |
| "把 `cp` 的目标路径写反了" | cp 源 目标 顺序总是:源在前,目标在后。如果写反了(cp 目标 源),可能会用目标文件覆盖源文件。一个常用技巧:先写目标路径再写源文件容易搞混,始终坚持"从哪来,到哪去"的思维。 |
| "以为路径中的空格无关紧要" | cd My Documents 会报错(cd 收到了两个参数)。正确的做法:cd "My Documents" 或 cd My\ Documents。Linux 的路径名可以包含空格,但建议不要在文件名中使用空格——用下划线或连字符替代。 |
"用 cp -r 复制目录时丢失了权限" | 如果希望完整保留权限、时间戳、符号链接等属性,使用 cp -a(archive 模式)代替 cp -r。 |
"rmdir 删不了非空目录" | 这不是 bug,而是设计——rmdir 只删空目录,防止误删。想删除非空目录用 rm -r。 |
最佳实践
| # | 建议 | 说明 |
|---|---|---|
| 1 | 删除前先 ls 确认 | 准备执行 rm -rf somedir 前,先用 ls somedir 看看里面有什么。这花 1 秒钟,但可以避免 1 小时的恢复工作。 |
| 2 | 文件名中避免空格和特殊字符 | 用 my-file.txt 或 my_file.txt 而非 my file.txt。这会让终端操作简单得多。 |
| 3 | 养成用 ls -lh 的习惯 | -h 让文件大小更易读,-l 显示完整的元信息。ls -la 是最常用的组合。 |
| 4 | 创建目录结构用 -p | mkdir -p a/b/c 一次性创建多层目录,比 mkdir a && cd a && mkdir b... 高效得多。 |
| 5 | 用 cp -i 和 mv -i 避免意外覆盖 | -i(interactive)会在覆盖前询问确认。很多发行版默认将 cp 和 mv 设置为 alias cp='cp -i',正是为了避免误覆盖。 |
| 6 | 用通配符前先用 echo 测试 | echo *.txt 会显示 *.txt 展开成了哪些文件——确认后再用 rm 或 cp 替换 echo。 |
| 7 | 符号链接用绝对路径更可靠 | ln -s /home/alice/docs /home/alice/link 比 ln -s docs link 更可靠,因为相对路径的符号链接在移动后可能会失效。 |
练习题
- (概念)Linux 中的
/etc、/var、/tmp目录各有什么用途?请各举两个配置或数据文件的具体例子。 - (概念)硬链接和符号链接的本质区别是什么?为什么硬链接不能跨文件系统?
- (实操)执行
mkdir -p ~/test/{a,b,c},然后用一条ls命令查看~/test/的结构。在~/test/a/下创建一个空文件hello.txt。 - (实操)用
touch在当前目录创建 10 个文件file01.txt到file10.txt。然后用一条mv命令将所有.txt文件移动到~/test/b/。提示:mv *.txt ~/test/b/。 - (实操)用
ln -s创建一个指向/etc的符号链接~/myetc。然后cd ~/myetc && ls——你进入了哪里?pwd输出什么?用pwd -P看看区别。 - (探究 🔍)运行
ls -li /,查看根目录下每个文件的 inode 号。有些目录(如/proc、/sys、/dev等挂载点)的 inode 号完全相同(都是 2)——为什么会这样? - (探究 🔍)运行
stat /etc/passwd,查看这个文件的 inode 信息(大小、块数、权限、时间戳)。尝试修改文件后(touch /etc/passwd会失败,因为权限不够——这正是安全机制),理解stat输出的每一列的含义。
点击查看答案
- (概念)`/etc` 存放系统配置,例:`/etc/passwd`(用户账户)、`/etc/hosts`(主机名解析)。`/var` 存放可变数据,例:`/var/log/syslog`(系统日志)、`/var/cache/apt/`(软件包缓存)。`/tmp` 存放临时文件,所有用户可读写,重启后清空。
- (概念)硬链接是同一 inode 的多个文件名,指向相同磁盘数据块;符号链接是存储目标路径的特殊文件。硬链接不能跨文件系统,因为 inode 只在同一文件系统内唯一——跨文件系统无法建立指向不同 inode 表的引用。
- (实操)`mkdir -p ~/test/{a,b,c}` 创建 ~/test/a/、~/test/b/、~/test/c/。`ls -R ~/test/` 递归查看结构。`touch ~/test/a/hello.txt` 创建空文件。可尝试 `tree ~/test/`(需安装 tree)更直观显示目录树。
- (实操)`touch file{01..10}.txt` 一条命令创建 10 个文件。`mv *.txt ~/test/b/` 将所有 .txt 移动到 ~/test/b/。通配符 `*` 被 Shell 展开为所有匹配的文件名。`ls ~/test/b/` 验证移动结果。
- (实操)`ln -s /etc ~/myetc` 创建符号链接。`cd ~/myetc && ls` 进入的是 /etc 目录。`pwd` 显示 ~/myetc(符号链接路径),`pwd -P` 显示 /etc(物理路径)。`-P` 选项解析符号链接显示真实路径。
- (探究 🔍)`ls -li /` 查看 inode 号。`/proc`、`/sys`、`/dev` 等挂载点目录的 inode 号都显示为 2——它们是不同文件系统的根目录,inode 号只在各自文件系统内唯一,跨文件系统出现相同数字是正常现象。`/bin`、`/lib` 等符号链接则是独立文件,各有自己的 inode。
- (探究 🔍)`stat /etc/passwd` 输出:大小、占用块数、权限(八进制和符号)、UID/GID、三个时间戳(Access/Modify/Change)。`touch /etc/passwd` 因权限不符报错——非 root 不能修改系统关键文件,这正是 Linux 安全模型的基本体现。
学习检查点
学完本章后,请检验自己是否掌握以下内容:
| 检查项 | 自测问题 | 验证方法 |
|---|---|---|
| 概念理解 | 能用自己的话解释 FHS 目录结构标准和"一切皆文件"的含义 | 尝试向他人讲解 |
| 命令操作 | 能不查文档使用 ls、cd、mkdir、cp、mv、rm 完成文件操作 | 在终端实际执行 |
| 原理掌握 | 能说出硬链接和符号链接的区别以及 inode 的作用 | 画出关系图 |
| 故障排查 | 能独立排查路径中空格导致的命令错误 | 模拟故障并修复 |
| 最佳实践 | 能说明为什么删除文件前应该先用 ls 确认目标 | 对比不同操作习惯 |
本章总结
文件系统是 Linux 系统的骨架。你学会了 Linux 目录结构标准(FHS)、绝对/相对路径、七种文件类型、核心文件操作命令(ls、cd、mkdir、touch、rm、cp、mv)、通配符的批量处理能力,以及硬链接与符号链接的区别。这些命令是你每天都会用到的基本工具。
核心概念速查:
| 概念 | 一句话定义 |
|---|---|
| FHS | Linux 文件系统目录结构标准(/, /home, /etc, /var 等) |
| 绝对路径 | 从 / 开始的完整路径(如 /home/alice/file.txt) |
| 相对路径 | 从当前位置开始的路径(如 ../docs) |
| 通配符 | Shell 展开文件名模式的机制(*, ?, [], {}) |
| 硬链接 | 同一 inode 的多个名字(共享文件数据,跨文件系统不行) |
| 符号链接 | 存储目标路径的特殊文件(可跨文件系统,原文件删除后失效) |
| inode | 文件元数据(权限、大小、时间)的存储结构,不含文件名 |
下一步:进入 1.5:文件系统结构「Linux 文件系统结构」,了解 Linux 目录体系与路径概念。
延伸阅读
- 1.5:文件系统结构 Linux 文件系统结构——深入了解 FHS 目录标准的每个核心目录
- 1.6:文件查看与文本编辑 文件查看与文本编辑——学习用 cat、less、head、tail 查看文件内容
- FHS 3.0 官方标准——文件系统层次结构标准的完整规范
- Linux man-pages——查看
man 7 hier了解目录结构,man 7 inode了解 inode - 实践项目:创建自己的
~/projects/目录结构模板,包含src/、docs/、tests/、data/子目录。以后每个新项目都复制这个模板。