↑ 顶部/笔记 2026-10-25 · 约 9 分钟

文件管理基础

一句话总结:Linux 里“一切皆文件”,会看目录结构、会读写文件、会查权限和时间,就掌握了日常一半的运维操作。 适用:Rocky Linux / CentOS 9(GNU 工具)。示例统一用 /tmp/lesson。

更新于 2026-10-25 · 正文约 3712 字

一、目录结构:单根树形

Linux 只有一个根 /,所有目录都挂在它下面,没有 C/D 盘的概念。

目录 作用 记忆点
/ 根目录,树的起点 一切从这开始
/bin、/sbin 普通用户 / 管理员命令(多是指向 /usr/bin 的软链接) binary
/boot 内核 vmlinuz、启动文件、GRUB 启动用
/dev 设备文件:sda、nvme0n1、tty、null device
/etc 配置文件大本营 edit config
/home 普通用户家目录 /home/用户名 用户的“我的文档”
/root root 的家目录 注意不是 /home/root
/lib、/lib64 共享库、内核模块 library
/media、/mnt 移动介质 / 临时挂载点 mount
/opt 第三方软件安装目录 optional
/proc、/sys 内核和进程的虚拟文件系统(不占硬盘) 内存里的“假文件”
/run 运行时数据(PID、socket) 重启即清空
/tmp 临时文件,systemd 会定期清理 谁都能写
/usr 用户级程序和数据,/usr/local 放自编译软件 Unix System Resource
/var 经常变化的数据:日志 log、邮件、数据库 variable

记忆口诀:etc 存配置,var 存变化,bin 放命令,dev 放设备,proc 放内核状态。

二、绝对路径与相对路径

  • 绝对路径:以 / 开头,从根开始,任何位置都能精确定位,例如 /etc/sysconfig/network-scripts/。
  • 相对路径:不以 / 开头,基于当前目录往下找,例如 cd sysconfig。
符号 含义 例子
. 当前目录 ./b/c/1.txt
.. 上一级目录 ../../a.txt
~ 当前用户家目录 root 是 /root,普通用户是 /home/用户名
- 上一次所在目录(cd -) 两个目录之间来回跳

三、文件的种类:ls -l 第一个字符

类型 符号 说明 例子
普通文件 - 文本、二进制、图片、压缩包 /etc/passwd、/bin/ls
目录 d 存放文件和子目录 /home、/etc
符号链接 l 指向另一个文件的“快捷方式” /dev/cdrom -> sr0
字符设备 c 按字符流访问 /dev/tty、/dev/null
块设备 b 按块访问 /dev/sda、/dev/nvme0n1
套接字 s 进程间/网络通信 /run/systemd/...
命名管道 p 单向数据流 mkfifo 创建

站在硬盘角度最小读写单位是扇区;站在操作系统角度是块(block,默认 8 个扇区)。 /dev/sda 不是目录,它是设备节点,本身没有内容,只是内核把读写请求转给硬盘驱动的入口。

四、看懂 ls -l 的每一段

[root@www ~]# ll /tmp/a.txt
-rwxr-xr--. 1 root group1 31457280 4月  16 14:21 /tmp/a.txt
字段 含义
- 文件类型(见上一节)
rwxr-xr-- 权限,三组:属主 u / 属组 g / 其他人 o,每组 r 读 w 写 x 执行
. SELinux 开启时创建的文件(getenforce 查看,setenforce 0 临时关闭)
1 普通文件是硬链接数,目录是子目录数
root 属主 owner
group1 属组 group
31457280 字节大小(ls -lh 带单位)
4月 16 14:21 最后修改时间 mtime

权限速算:r=4、w=2、x=1,三段相加就是数字表示法:rwx=7、rw-=6、r-x=5。

chmod 644 file         # rw-r--r--
chmod u+x script.sh    # 属主加执行
chown user:group file  # 改属主和属组

五、三种时间戳(stat)

时间 含义 什么时候变
atime 访问时间 读一次文件内容就变(现代默认 relatime,不一定每次)
mtime 修改时间 文件内容变化才变
ctime 状态变化时间 元数据(权限、属主)或内容变化都会变
stat /tmp/111.txt
echo 111 > /tmp/111.txt   # 覆盖写:mtime、ctime 变

六、文件与目录操作命令

命令 作用 常用选项 例子
touch 创建空文件 / 更新时间戳 -t 指定时间 touch /tmp/{1..10}.txt
mkdir 建目录 -p 递归创建 mkdir -p /tmp/a/b/c
cp 复制 -r 目录、-a 保留属性、-i 覆盖提示 cp -a /etc /tmp/etc.bak
mv 移动 / 重命名 -i mv a.txt b.txt
rm 删除 -r 递归、-f 强制 rm -rf /tmp/*
ls 列目录 -l -a -h -d -t ls -dlh /tmp
cd 切换目录 - 回上次 cd -
pwd 显示当前路径 pwd
tree 树形展示 -L 层级、-d 只看目录 tree -L 2 /etc
cat 一次看全部 -n 行号 cat /etc/hosts
less 分页看(推荐) 上下键翻、/ 搜索、q 退出 less /var/log/messages
head 看开头 -n 行数 head -3 /etc/passwd
tail 看结尾 -f 动态跟踪 tail -f /var/log/messages
echo 输出 / 写文件 > 覆盖、>> 追加 echo 111 >> /tmp/a.txt
stat 看元数据 stat file
file 判断文件类型 file /bin/ls
du 统计占用空间 -sh 汇总 du -sh /var/log
df 分区使用率 -h df -h
ln 创建链接 -s 软链接 ln -s /opt/app /usr/local/app
find 按条件查找 -name -type -size -mtime -exec find /tmp -name "*.log" -mtime +7 -delete

软链接 vs 硬链接

对比 软链接 硬链接
创建 ln -s 源 目标 ln 源 目标
本质 新文件,内容是源路径 同一个 inode 的另一个名字
跨文件系统 可以 不可以
链接目录 可以 不可以
源文件删除 链接失效 数据仍在,链接数减 1
ln -s /data/app/current /opt/app   # 发布切换软链接即可回滚

七、/etc 下必须认识的配置文件

文件 作用
/etc/passwd 用户信息(用户名:密码占位:UID:GID:描述:家目录:shell)
/etc/shadow 密码哈希与有效期(只有 root 能读)
/etc/group 用户组
/etc/hostname 主机名(hostnamectl set-hostname 改的就是它)
/etc/hosts 本地域名解析,优先级高于 DNS
/etc/resolv.conf DNS 客户端配置(nameserver)
/etc/fstab 开机自动挂载列表
/etc/selinux/config SELinux 开关
/etc/ssh/sshd_config SSH 服务端配置

Rocky 9 网卡配置在 /etc/NetworkManager/system-connections/;CentOS 7 在 /etc/sysconfig/network-scripts/ifcfg-ens33。

八、其他常用位置

  • /var/log/messages:系统日志;/var/log/secure:登录与 sudo 日志。
  • /tmp:临时文件,相当于“公共回收站”。
  • 生成指定大小文件:dd if=/dev/zero of=/tmp/test.txt bs=10KB count=3 → 30KB 全零文件。

九、远程连接 SSH

systemctl status sshd          # 确认服务端已启动
systemctl restart sshd         # 改完配置重启生效
ssh root@192.168.0.163         # 客户端连接

Windows 可用 PowerShell 自带的 ssh,或 Xshell、SecureCRT、PuTTY;macOS / Linux 自带 ssh 客户端。

十、通配符与重定向

通配符 含义 例子
* 任意多个字符 *.log
? 任意一个字符 file?.txt
[abc] 集合中任意一个 [abc].txt
{1..5} 花括号展开 touch f{1..5}
重定向 含义
> 覆盖输出
>> 追加
2> 错误输出
&> 正确 + 错误
| 管道

十一、速查表

pwd; cd -; cd ~; cd /etc
ls -lah; ls -dl /tmp; ls -lt
tree -L 2 /etc
touch a.txt; mkdir -p a/b/c
cp -a src dst; mv a b; rm -rf dir
cat f; less f; head -5 f; tail -f f
echo x > f; echo y >> f
ln -s /opt/app /usr/local/app
find / -name "*.conf" -type f 2>/dev/null
find /tmp -mtime +7 -name "*.log" -delete
du -sh /var/log/*; df -h
stat f; file f
chmod 644 f; chmod -R u+rwX dir; chown -R user:user dir

十二、常见坑

  1. rm -rf /tmp/* 前先 ls 一遍,通配符写错会删多。
  2. cp 复制目录必须 -r/-a。
  3. mv 同名覆盖不提示,重要文件用 mv -i。
  4. chmod 777 图省事是坏习惯,按最小权限给。
  5. find / 会穿越 /proc、/sys,加 2>/dev/null。
  6. 软链接源用相对路径,移动后易失效,建议绝对路径。
  7. > 会清空文件,>> 才是追加。

练习(16 题)

先自己做,再点开答案核对 0 / 16 已查看

01

查看 /etc 目录本身的详情(不是里面内容),要带人类可读大小。

查看答案
ls -dlh /etc

目录本身用 -d,否则列出的是里面的内容;-h 让大小带单位。

02

在当前用户家目录下一次性创建 dir1 到 dir5 五个目录。

查看答案
mkdir ~/dir{1..5}

花括号展开成 5 个参数,一条命令建 5 个目录。

03

把 /etc/hosts 复制到 /tmp 并命名为 hosts.bak,保留原属性。

查看答案
cp -a /etc/hosts /tmp/hosts.bak

-a 保留权限、属主、时间戳,适合备份。

04

把 /tmp/a.txt 重命名为 /tmp/b.txt。

查看答案
mv /tmp/a.txt /tmp/b.txt

同一目录下 mv 就是重命名。

05

只删除 /tmp 下所有 .log 文件。

查看答案
rm -f /tmp/*.log

先 ls /tmp/*.log 确认再删更稳。

06

统计 /var/log 下每个子项占用的空间,按大小排序取前 5。

查看答案
du -sh /var/log/* | sort -rh | head -5

du -sh 汇总,sort -rh 按人类可读大小倒序。

07

查看 /etc/passwd 的最后 3 行,并让行号显示出来。

查看答案
tail -n 3 /etc/passwd
cat -n /etc/passwd | tail -n 3

tail 自身不带行号,需要行号就配合 cat -n。

08

动态跟踪 /var/log/messages 的新增内容。

查看答案
tail -f /var/log/messages

-f 持续输出新增行;-F 在日志轮转后还能继续跟踪。

09

给 /opt/run.sh 加上属主可执行权限,用数字表示法。

查看答案
chmod 744 /opt/run.sh

7=rwx、4=r--、4=r--。

10

把 /opt/data 的属主和属组都改成 www:www,包含子目录。

查看答案
chown -R www:www /opt/data

-R 递归;用户:组 同时改属主和属组。

11

创建一个软链接 /usr/local/nginx 指向 /opt/nginx-1.24。

查看答案
ln -s /opt/nginx-1.24 /usr/local/nginx

软链接源用绝对路径,链接移动后仍有效。

12

找出 /etc 下所有 .conf 文件,忽略权限报错。

查看答案
find /etc -name "*.conf" -type f 2>/dev/null

-type f 排除同名目录;2>/dev/null 屏蔽权限报错。

13

找出 /tmp 下 7 天以前修改的 .log 文件并删除(先只打印确认)。

查看答案
find /tmp -name "*.log" -mtime +7 -print
find /tmp -name "*.log" -mtime +7 -delete

先 -print 确认,再换成 -delete。

14

查看 /tmp/a.txt 的三种时间戳。

查看答案
stat /tmp/a.txt

输出里 Access、Modify、Change 分别是 atime、mtime、ctime。

15

用一条命令生成一个 30KB、内容全零的文件。

查看答案
dd if=/dev/zero of=/tmp/test.txt bs=10KB count=3

读 3 块、每块 10KB 的零字节,生成约 30KB 文件。

16

判断 /bin/ls 是文本还是二进制文件。

查看答案
file /bin/ls

输出 ELF 64-bit LSB executable 说明是二进制。

文件管理基础 · 生成于 2026-10-26 00:46