Linux 文件管理
Linux 文件管理
目录
- 前置知识:文件元数据
- 导航与查看:pwd / ls / cd
- 内容查看:cat / less / head / tail
- 文件操作:mkdir / touch / cp / mv / rm
- 通配符 * ? 的应用
- 查找与定位:find / locate / which / whereis
- 软链接 vs 硬链接:ln
- 压缩与解压:tar / gzip / zip
- 总结与练习
〇、前置知识:文件元数据
文件元数据(metadata) 是文件系统中描述文件本身属性(而非文件内容)的数据,它们存储在 inode 中,主要包含:
常见元数据字段:
- 权限(rwxr-xr-x) — 属主、属组、其他人的读/写/执行权限
- 所有者(uid/gid) — 文件的用户和组归属
- 时间戳:
- atime — 最后访问时间
- mtime — 最后修改时间(内容变更)
- ctime — 最后状态变更时间(权限/所有者/链接数等变更,非内容)
- 文件大小 — 字节数
- 链接计数 — 硬链接数量
- 文件类型 — 普通文件、目录、符号链接、设备文件等
- 扩展属性(xattrs) — 用户自定义或系统附加的键值对(如 SELinux 上下文)
查看元数据使用 stat 命令:
stat filename
也可以用 ls -l(部分信息)或 getfattr -d(查看扩展属性)。
元数据与文件内容分开存储:内容在 data blocks 中,元数据在 inode table 中。rm 删除文件时,只是释放 inode 和 data block,但在某些文件系统下可通过 debugfs 等工具恢复(前提是 inode 和数据块未被覆盖)。
[root@localhost ~]# stat a.txt
File: a.txt
Size: 2518 Blocks: 8 IO Block: 4096 regular file
Device: 253,0 Inode: 100871888 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2026-07-19 16:57:45.679395790 +0800
Modify: 2026-07-19 16:57:45.679395790 +0800
Change: 2026-07-19 16:57:45.682395782 +0800
Birth: 2026-07-19 16:57:45.679395790 +0800

stat 输出字段说明:
| 字段 | 值 | 含义 |
|---|---|---|
| File | a.txt | 文件名,存储在目录项 (dentry),不在 inode 中 |
| Size | 2518 | 文件内容 2518 字节(~2.5KB) |
| Blocks | 8 | 占用 8 个 512B 扇区 = 4096B(XFS 最小分配 4KB) |
| IO Block | 4096 | 文件系统 I/O 块大小 4KB |
| File type | regular file | 普通文件(Linux 七种文件类型之一) |
| Device | 253,0 | 主:次设备号,对应 /dev/mapper/rhel-root |
| Inode | 100871888 | 元数据索引编号,文件系统内唯一 |
| Links | 1 | 硬链接计数,=1 表示只有一个文件名指向此 inode |
| Access (权限) | 0755 | 0 (特殊) + 7 (属主) + 5 (属组) + 5 (其他人) |
| Uid | 0 → root | 文件属主(超级管理员 uid=0) |
| Gid | 0 → root | 文件属组(root 组) |
| Context | unconfined_u:... | SELinux 上下文(用户/角色/类型/级别) |
| Access (atime) | 16:57:45.679 | 最后访问时间,读取时更新(cat/vim 打开/less) |
| Modify (mtime) | 16:57:45.679 | 内容修改时间,写入时更新(echo/重定向/vim :w) |
| Change (ctime) | 16:57:45.682 | 元数据变更时间,chmod/chown/mv 时更新 |
| Birth | 16:57:45.679 | 文件创建时间,XFS 支持记录 |
补充:
-rwxr-xr-x表示普通文件,属主 rwx (7),属组 r-x (5),其他人 r-x (5)。SELinux Context 中:unconfined_u非受限用户、object_r客体角色、admin_home_t管理员家目录文件标签、s0最低敏感级别。
一、导航与查看:pwd / ls / cd
这三个命令是最基础的导航三件套:我在哪(pwd)→ 有什么(ls)→ 去哪(cd)。
1.1 pwd —— 显示当前工作目录
pwd # 打印当前所在目录的完整路径
pwd -P # 显示物理路径(如果当前目录是软链接,显示链接指向的真实路径)
pwd= Print Working Directory,打印当前工作目录。- 例如输出
/home/rocky,表示当前在 rocky 用户的主目录。
1.2 ls —— 列出目录内容
ls # 列出当前目录的文件和子目录
ls -l # 以长格式(详细)列出,显示权限、属主、大小、时间等
ls -a # 显示所有文件,包括隐藏文件(以 . 开头的文件)
ls -la # 组合:长格式 + 所有文件
ls -h # 人类可读大小(配合 -l 使用,显示 K/M/G)
ls -R # 递归列出子目录内容
ls -t # 按修改时间排序(最新的在前)
ls /etc # 列出指定目录的内容
常用组合:ls -lah(长格式、含隐藏文件、人类可读大小),这是最常用的查看方式。
1.3 看懂 ls -l 的输出
执行 ls -l 输出示例:
-rw-r--r--. 1 rocky rocky 1234 May 10 10:30 file.txt
drwxr-xr-x. 2 rocky rocky 4096 May 10 10:30 dir1
lrwxrwxrwx. 1 rocky rocky 10 May 10 10:30 link -> file.txt
每一行分为若干字段,从左到右:
| 字段 | 含义 |
|---|---|
| 第 1 个字符 | 文件类型:- 普通文件,d 目录,l 符号链接,b 块设备,c 字符设备,p 管道,s 套接字 |
| 第 2-4 位 | 属主(user) 的读/写/执行权限(rwx) |
| 第 5-7 位 | 属组(group) 的权限 |
| 第 8-10 位 | 其他用户(other) 的权限 |
| 第 2 个字段 | 硬链接数(详见第六章) |
| 第 3 个字段 | 属主(文件所有者) |
| 第 4 个字段 | 属组 |
| 第 5 个字段 | 文件大小(字节,配合 -h 显示为 K/M/G) |
| 第 6-8 个字段 | 最后修改时间 |
| 第 9 个字段 | 文件名(若是符号链接,显示 链接名 -> 目标) |
权限符号含义:
r= 读(read,4),w= 写(write,2),x= 执行(execute,1),-= 无此权限。- 例如
rwxr-xr-x:属主可读可写可执行,属组和其他用户只可读可执行。 - 数字对应关系在权限修改(
chmod 755)中常用,详见后文或后续博客。
1.4 cd —— 切换目录
cd # 回到当前用户的主目录(相当于 cd ~)
cd ~ # 回到主目录
cd /etc # 切换到绝对路径 /etc
cd .. # 返回上一级目录
cd ../.. # 返回上两级目录
cd - # 回到上一次所在的目录
cd ~other # 切换到 other 用户的主目录
相对路径 vs 绝对路径:
- 绝对路径:以
/开头,从根目录算起,如/etc/hosts。 - 相对路径:不以
/开头,从当前目录算起,如../var/log。
二、内容查看:cat / less / head / tail
查看文件内容是最常用的操作,按需选择工具:小文件用 cat,大文件用 less,看开头用 head,看结尾/实时用 tail。
2.1 cat —— 连接并打印文件内容
cat file.txt # 把整个文件内容一次性打印到屏幕
cat -n file.txt # 显示行号
cat -A file.txt # 显示所有不可见字符(如 $ 表示行尾)
cat file1 file2 # 依次打印多个文件
cat a.txt > b.txt # 重定向:把 a 的内容写入 b(覆盖)
cat a.txt >> b.txt # 追加:把 a 的内容追加到 b 末尾
cat= concatenate(连接)。注意:cat会一次性把整个文件输出,文件很大时会刷屏,此时应改用less。
2.2 less —— 分页查看(大文件首选)
less bigfile.log # 分页查看文件内容
进入 less 后的常用按键:
| 按键 | 作用 |
|---|---|
| 空格 / f | 向下翻一页 |
| b | 向上翻一页 |
| 回车 / e | 向下翻一行 |
| 上/下箭头 / k/j | 逐行移动 |
/关键词 |
向下搜索,n 跳到下一个匹配 |
?关键词 |
向上搜索 |
| g / G | 跳到文件开头 / 结尾 |
| q | 退出 less |
为什么推荐 less? 它可以前后翻页、搜索,且不会一次性把所有内容刷到屏幕,处理大文件非常高效。
more是较老的同类工具,功能不如 less。
2.3 head —— 查看文件开头
head file.txt # 默认显示前 10 行
head -n 20 file.txt # 显示前 20 行
head -5 file.txt # 显示前 5 行(-5 等价于 -n 5)
head -c 100 file.txt # 显示前 100 个字节
2.4 tail —— 查看文件结尾
tail file.txt # 默认显示最后 10 行
tail -n 20 file.txt # 显示最后 20 行
tail -f app.log # ★实时跟踪文件新增内容
tail -f -n 50 app.log # 先显示最后 50 行,再实时跟踪
tail -f 详解:
-f= follow(跟随),文件有新内容写入时会实时显示在屏幕上,非常适合查看日志。- 典型用法:
tail -f /var/log/messages或tail -f /var/log/messages(Red Hat 系系统日志)。 - 退出:按
Ctrl + C终止。 - 进阶:
tail -F(大写 F)比-f更智能,即使日志文件被轮转(rotate)/重建也能继续跟踪,生产环境更推荐。
# 实时查看 Rocky Linux 系统日志(Red Hat 系主日志文件)
sudo tail -f /var/log/messages
# 实时查看安全/登录日志
sudo tail -f /var/log/secure
三、文件操作:mkdir / touch / cp / mv / rm
3.1 mkdir —— 创建目录
mkdir newdir # 创建一个目录
mkdir -p a/b/c # ★递归创建多级目录(父目录不存在也会自动创建)
mkdir -v dir # 显示创建过程(verbose)
mkdir -m 755 dir # 创建时直接指定权限
-p是最常用的选项,例如mkdir -p /home/user/project/src一次性创建整条路径。
3.2 touch —— 创建空文件 / 更新时间戳
touch newfile.txt # 创建空文件(文件已存在则更新其时间戳)
touch -t 202401011200 file # 把时间戳设置为指定时间
touch file1 file2 file3 # 一次创建多个文件
3.3 cp —— 复制
cp source.txt dest.txt # 复制文件并重命名
cp source.txt dir/ # 复制到目录(保留原名)
cp -r srcdir destdir # ★递归复制目录
cp -i a b # 覆盖前询问确认(interactive,建议养成习惯)
cp -p a b # 保留权限、属主、时间戳(preserve)
cp -a a b # 相当于 -dpR,完整保留属性(常用于备份)
cp -v a b # 显示复制过程
3.4 mv —— 移动 / 重命名
mv old.txt new.txt # 重命名文件
mv file.txt dir/ # 移动到目录
mv -i a b # 覆盖前询问
mv -v a b # 显示过程
mv dir1 dir2 # 移动(或重命名)目录,无需 -r
mv对文件和目录都不需要-r,它本质上是"移动"(可跨文件系统时复制+删除)。
3.5 rm —— 删除(小心使用!)
rm file.txt # 删除文件
rm -r dir # ★递归删除目录(及其中的所有内容)
rm -f file # 强制删除,不询问(force)
rm -rf dir # ★★递归 + 强制删除(危险,慎用!)
rm -i *.log # 逐个询问确认后删除
rm -d dir # 删除空目录(等价于 rmdir)
安全提醒(重要):
rm -rf删除后无法恢复(不会进回收站),使用前务必三思,确认路径正确。- 经典事故:
rm -rf /(删除根目录)、rm -rf /var(删除系统数据)都会摧毁系统。 - 建议:删除重要目录前,先用
pwd和ls确认当前路径,或养成用-i询问的习惯。 rmdir只能删除空目录,非空目录用rm -r。
四、通配符 * ? 的应用
通配符(Wildcard / Globbing) 用于批量匹配文件名,由 shell 在命令执行前展开,而不是由命令本身处理。
| 通配符 | 含义 | 示例 |
|---|---|---|
* |
匹配任意多个(含 0 个)任意字符 | *.log 匹配所有以 .log 结尾的文件 |
? |
匹配恰好 1 个任意字符 | file?.txt 匹配 file1.txt、fileA.txt,不匹配 file10.txt |
[abc] |
匹配方括号中任一个字符 | file[12].txt 匹配 file1.txt、file2.txt |
[a-z] |
匹配范围内的字符 | file[0-9].txt 匹配 file0.txt~file9.txt |
[!abc] |
匹配不在方括号中的字符 | file[!1].txt 匹配不以 1 结尾的 file?.txt |
4.1 通配符应用示例
# 列出所有 .log 文件
ls *.log
# 删除所有 .log 文件(rm *.log 是典型的批量删除用法)
rm *.log
# 删除以 backup 开头的所有文件
rm backup*
# 复制所有 .txt 文件到 /tmp
cp *.txt /tmp/
# 匹配单个字符:file1.txt 或 file2.txt
ls file?.txt
# 匹配数字开头的文件
ls [0-9]*
# 移动所有以 .log 或 .txt 结尾的文件
mv *.{log,txt} /backup/
# 查看 /etc 下所有 .conf 配置文件
ls /etc/*.conf
4.2 注意事项
*不匹配以.开头的隐藏文件(除非通配符本身以.开头)。- 通配符在没有匹配时,默认保持原样传给命令(可能报错"no such file");某些 shell 可配置为报错。
rm *.log需谨慎:先ls *.log确认要删除的文件列表,再执行删除。- 注意与正则表达式区分:通配符是文件名匹配(glob),正则用于文本内容匹配(如 grep)。
五、查找与定位:find / locate / which / whereis
| 命令 | 作用 | 查找依据 | 速度 |
|---|---|---|---|
find |
在指定目录实时遍历查找,条件强大 | 按文件名、类型、时间、大小等 | 慢(实时扫描) |
locate |
从预建数据库中快速查找 | 按文件名 | 极快(但可能不是最新) |
which |
查找可执行命令的位置 | 按 PATH 环境变量 | 快 |
whereis |
查找命令的二进制、源码、man 手册 | 按固定目录 | 快 |
5.1 find —— 功能最强大的查找命令
# 按名称查找(当前目录递归)
find . -name "*.log"
find /etc -name "httpd.conf"
# 按名称查找,忽略大小写
find / -iname "readme*"
# 按类型查找(f=文件,d=目录,l=符号链接)
find /var -type f
find / -type d -name "conf"
# 按大小查找(+100M 大于,-10k 小于)
find / -size +100M
find . -size -1k
# 按时间查找(mtime=修改时间,+7 为超过 7 天)
find /var/log -mtime +7
find . -mmin -60 # 60 分钟内修改过的
# 找到后执行操作(删除、查看详情等)
find /tmp -name "*.tmp" -delete
find . -name "*.log" -exec ls -l {} \;
find /var/log -name "*.gz" -exec rm {} \;
# 按权限/属主查找
find / -user rocky
find / -perm 644
find的-exec ... {} \;语法中:{}代表找到的每个文件,\;表示命令结束。也可以加-ok在每次执行前询问。
5.2 locate —— 数据库快速查找
locate *.conf # 从数据库快速查找
locate httpd.conf
sudo updatedb # 手动更新数据库(locate 依赖它)
locate查询的是updatedb建立的文件索引数据库,速度极快。- 缺点:数据库是定期更新的,新建的文件可能查不到;查不到时先执行
sudo updatedb更新。 - Rocky Linux 中可能需先安装:
sudo dnf install mlocate。
5.3 which —— 查找命令所在路径
which ls # 输出 /usr/bin/ls
which -a python3 # 列出所有匹配的路径
which dnf curl vim # 一次查多个
which在 PATH 环境变量指定的目录中查找可执行命令,用来确认"某个命令装没装、在哪"。- 常见用途:查
which java、which python确认软件安装位置。
5.4 whereis —— 查找二进制/源码/手册
whereis ls # 输出二进制、源码、man 手册位置
whereis -b ls # 只找二进制
whereis -m ls # 只找 man 手册
whereis在固定目录(如/bin、/usr/bin、/usr/man等)中查找,能找到二进制文件、源码、帮助手册。- 它不依赖 PATH,也不做实时扫描。
选哪个?
- 按文件名全盘/大范围找文件 →
find(最可靠)或locate(最快)。 - 找某个命令装在哪 →
which(查 PATH)或whereis(含手册)。
六、软链接 vs 硬链接:ln
链接(link) 是让多个文件名指向同一个文件的机制。理解它需要先了解 inode(索引节点)。
6.1 先理解 inode 和目录项
- 每个文件在磁盘上对应一个 inode,其中保存文件的元数据(大小、权限、属主、数据块位置等)和一个 inode 编号。
- 文件名本身并不在 inode 中,而是存在**目录项(directory entry)**里,目录项把"文件名"映射到"inode 编号"。
- 访问文件的流程:文件名 → 目录项 → inode → 数据块。
一句话:ls -i 可以查看每个文件的 inode 编号,这是理解链接的关键。
ls -i file.txt # 查看文件的 inode 编号
6.2 硬链接(Hard Link)
ln target.txt hardlink.txt # 为 target.txt 创建硬链接 hardlink.txt
硬链接的本质:在目录中新增一个目录项,让这个新文件名也指向同一个 inode。
硬链接的特点:
- 硬链接与原始文件共享同一个 inode,
ls -i编号相同,内容完全一致。 - 删除任意一个文件名,数据不会被删除,只要还有至少一个硬链接存在,数据就还在。
- 修改任意一个链接的内容,其他链接都会同步变化(因为是同一份数据)。
- 硬链接数记录在 inode 中,就是
ls -l第 2 个字段的数字。
硬链接的限制(重要):
- 不能对目录创建硬链接(避免形成循环,只有系统可以创建 . 和 ..)。
- 不能跨文件系统创建硬链接(不同文件系统有各自独立的 inode 表)。
- 通常也不建议对特殊文件(设备等)创建硬链接。
6.3 软链接 / 符号链接(Symbolic Link)
ln -s target.txt symlink.txt # 创建软链接 symlink.txt → target.txt
软链接的本质:它本身是一个独立的文件(有自己的 inode),文件内容存的是目标文件的路径字符串。它就像 Windows 里的"快捷方式"。
软链接的特点:
- 软链接有自己独立的 inode,
ls -i与目标不同。 ls -l中软链接显示为l开头,并显示链接名 -> 目标。- 若目标被删除,软链接就变成失效的(broken),指向一个不存在的路径。
- 可以跨文件系统创建,可以链接目录。
- 软链接内容只是一个路径字符串,所以目标移动位置后软链接会失效。
6.4 两者对比表
| 对比项 | 硬链接 | 软链接(符号链接) |
|---|---|---|
| 是否独立 inode | 否,与目标共享 | 是,有独立 inode |
| 内容本质 | 同一份数据 | 存目标路径字符串 |
| 目标删除后 | 数据仍在(有其他链接) | 链接失效(broken) |
| 能否链接目录 | 不能 | 可以 |
| 能否跨文件系统 | 不能 | 可以 |
| ls -l 显示 | 普通文件类型(-) | 类型为 l,显示 -> 目标 |
| 直观理解 | 同一个文件的另一个"门牌号" | 指向目标的"快捷方式" |
| 创建命令 | ln 源 目标 |
ln -s 源 目标 |
6.5 验证与常见用法
echo hello > file.txt
ln file.txt hard.txt # 硬链接
ln -s file.txt soft.txt # 软链接
ls -li # -i 显示 inode 编号
# 输出中 file.txt 和 hard.txt 的 inode 编号相同,soft.txt 不同
# 删除原文件验证区别
rm file.txt
cat hard.txt # 仍能读到 hello(硬链接,数据还在)
cat soft.txt # 报错 No such file(软链接失效)
实际使用建议:
- 软链接
ln -s使用更普遍(可链接目录、跨文件系统、直观)。常见如/usr/bin/python -> python3、/etc/localtime -> /usr/share/zoneinfo/...。 - 硬链接适合对同一文件系统内的大文件做"备份"式引用,节省空间(不重复存数据)。
七、压缩与解压:tar / gzip / zip
7.1 打包 vs 压缩
- 打包(archive):把多个文件/目录合并成一个文件,不减少体积。代表工具:
tar(默认只打包不压缩)。 - 压缩(compress):通过算法减少文件体积。代表工具:
gzip、bzip2、xz。 - 实际场景:通常先用
tar打包,再用gzip等压缩。tar提供了一步完成的-z(gzip)、-j(bzip2)、-J(xz)选项。
一句话:tar 负责"合在一起",gzip 负责"变小"。而 zip 是打包和压缩一步到位的格式。
7.2 tar —— 打包/归档
# 创建(打包)一个 tar 包
tar -cvf backup.tar /etc # c=create v=verbose f=文件
# 打包并压缩为 .tar.gz(最常用)
tar -czvf backup.tar.gz /etc
# 解包 / 解压
tar -xvf backup.tar # 解包
tar -xzvf backup.tar.gz # 解压 .tar.gz
tar -xjvf backup.tar.bz2 # 解压 .tar.bz2
tar -xJvf backup.tar.xz # 解压 .tar.xz
# 查看包内容(不解开)
tar -tvf backup.tar.gz
# 解压到指定目录
tar -xzvf backup.tar.gz -C /tmp/
# 追加文件到包
tar -rvf backup.tar newfile
tar 常用选项:
| 选项 | 含义 |
|---|---|
-c |
创建(create)打包 |
-x |
解包(extract) |
-t |
列出包内容(test) |
-v |
显示详细过程(verbose) |
-f |
指定文件名(必须紧跟文件名) |
-z |
通过 gzip 压缩/解压(.tar.gz) |
-j |
通过 bzip2 压缩/解压(.tar.bz2) |
-J |
通过 xz 压缩/解压(.tar.xz) |
-C |
解压到指定目录 |
-p |
保留权限属性 |
记忆技巧:
tar -czvf 打包名 源创建,tar -xzvf 打包名解压。Rocky Linux 中.tar.gz是最常见的格式。
7.3 gzip / gunzip —— 单文件压缩
gzip file.txt # 压缩,生成 file.txt.gz,原文件被替换/删除
gzip -k file.txt # 压缩但保留原文件
gunzip file.txt.gz # 解压,恢复 file.txt
gzip -d file.txt.gz # 等价于 gunzip
gzip -l file.txt.gz # 查看压缩信息
gzip只能压缩单个文件(不能直接压缩目录),压缩后文件名加.gz后缀。- 要压缩目录,通常先
tar打包再用 gzip(或直接用tar -z)。 - 查看压缩的文本文件可直接用
zcat file.gz、zless、zgrep。
7.4 zip / unzip —— 一步到位的压缩格式
# 压缩(打包+压缩一步完成)
zip archive.zip file1 file2 dir
zip -r archive.zip dir/ # 递归压缩目录
zip -P pass archive.zip f # 加密压缩
# 解压
unzip archive.zip
unzip archive.zip -d /tmp/ # 解压到指定目录
unzip -l archive.zip # 查看内容不解压
zip是打包和压缩一体的格式,与 Windows 的 .zip 兼容,适合跨平台传输。- Rocky Linux 可能需安装:
sudo dnf install zip unzip。
7.5 三种方式对比
| 方式 | 是否压缩 | 适用场景 | 常见后缀 |
|---|---|---|---|
tar(不带 -z) |
只打包不压缩 | 归档、组合多个文件 | .tar |
tar -z |
打包+gzip 压缩 | Linux 中最常用的分发格式 | .tar.gz / .tgz |
gzip |
只压缩单个文件 | 压缩单个日志/文件 | .gz |
zip |
打包+压缩 | 跨平台、与 Windows 兼容 | .zip |
压缩率参考(粗略):gzip 较快、体积中等;bzip2 更小但慢;xz 压缩率最高但最慢。Red Hat 系软件包
.rpm、源码包.tar.xz很常见。
7.6 实战:打包压缩与解压日志
# 把 /var/log 下旧的 .log 日志打包压缩
cd /var/log
sudo tar -czvf logs-backup.tar.gz *.log
# 解压到 /tmp 目录查看
mkdir -p /tmp/restore
sudo tar -xzvf logs-backup.tar.gz -C /tmp/restore/
# 查看包内文件列表
tar -tvf logs-backup.tar.gz
八、总结与练习
8.1 核心速查
| 需求 | 命令 |
|---|---|
| 我在哪 | pwd |
| 看什么 | ls -lah |
| 去哪 | cd |
| 看小文件 | cat |
| 看大文件 | less |
| 看开头 | head |
| 看结尾/实时 | tail -f |
| 建目录 | mkdir -p |
| 建空文件 | touch |
| 复制 | cp -r(目录) |
| 移动/重命名 | mv |
| 删除 | rm -rf(慎用) |
| 找文件 | find / locate |
| 找命令 | which / whereis |
| 建软链接 | ln -s |
| 打包压缩 | tar -czvf / tar -xzvf |
8.2 动手练习建议
# 1. 创建练习目录结构
mkdir -p ~/practice/{docs,logs,backup}
# 2. 创建一些文件和日志
touch ~/practice/docs/{a.txt,b.txt,readme.md}
echo "hello" > ~/practice/logs/app.log
# 3. 练习查看
cd ~/practice
ls -lah
head -3 /etc/passwd
tail -f ~/practice/logs/app.log # 另开终端 echo 追加内容观察实时输出
# 4. 练习通配符
rm ~/practice/docs/*.txt
# 5. 练习查找
find ~/practice -name "*.md"
# 6. 练习软链接
ln -s ~/practice/logs/app.log ~/practice/backup/app-link
ls -l ~/practice/backup/
# 7. 练习打包压缩
tar -czvf ~/practice/backup/practice.tar.gz ~/practice/docs
tar -tvf ~/practice/backup/practice.tar.gz
参考资料
- GNU Coreutils 官方文档(ls、cp、mv、rm、ln 等):https://www.gnu.org/software/coreutils/manual/
- GNU Tar 官方手册:https://www.gnu.org/software/tar/manual/
- man 手册(Rocky Linux 内运行
man ls、man find、man tar等) - Rocky Linux 官方文档 - 文件系统:https://docs.rockylinux.org/books/admin_guide/07-file-systems/
- 菜鸟教程 - Linux 命令大全:https://www.runoob.com/linux/linux-command-manual.html
- 菜鸟教程 - Linux 文件与目录管理:https://www.runoob.com/linux/linux-file-content-manage.html
/
