理解 Linux 文件系统:ls -ltr 解析与目录结构说明
发布: (2025年12月7日 GMT+8 04:03)
6 min read
原文: Dev.to
Source: Dev.to
问题
你运行 ls 并看到文件名。但它是文件还是文件夹?谁拥有它?你甚至能编辑它吗?
在 Linux 的第二天,我了解到 ls 能告诉你远不止名字这么多的信息。
命令:ls -ltr
ls -ltr
参数含义
-l– 长格式(详细信息)-t– 按修改时间排序(最新的在前)-r– 逆序(最新的在底部)
终端输出示例
drwxr-xr-x 2 ubuntu ubuntu 4096 Dec 01 10:23 documents
-rw-r--r-- 1 ubuntu ubuntu 156 Dec 02 14:45 config.txt
lrwxrwxrwx 1 ubuntu ubuntu 15 Dec 03 09:12 link_to_file -> /home/ubuntu/file
-rwxr-xr-x 1 ubuntu ubuntu 8192 Dec 04 16:30 script.sh
drwxr-xr-x 3 root root 4096 Dec 05 11:20 logs
crw-rw---- 1 root tty 136, 0 Dec 06 08:15 tty0
brw-rw---- 1 root disk 8, 0 Dec 06 10:00 sda
srwxrwxrwx 1 root root 0 Dec 04 12:30 mysql.sock
读取输出
第 1 列:文件类型 + 权限
drwxr-xr-x
│└────┬────└─── Others (r-x)
│ └──────── Group (r-x)
│ └── Owner (rwx)
└────────────── File Type (d)
首字符 – 文件类型
| 符号 | 类型 | 描述 |
|---|---|---|
d | 目录 | 文件夹 |
- | 普通文件 | 常规文件 |
l | 符号链接 | 指向其他文件的快捷方式 |
c | 字符设备 | 键盘、终端等 |
b | 块设备 | 硬盘、U 盘等 |
s | 套接字 | 进程间通信 |
p | 命名管道 | 进程通信 |
接下来的 9 个字符 – 权限
r– 读取w– 写入x– 执行-– 无权限
示例:rwxr-xr-x
- 所有者:读取、写入、执行
- 所属组:读取、执行(无写入)
- 其他人:读取、执行(无写入)
第 2‑9 列:详细信息
-rw-r--r-- 1 ubuntu ubuntu 156 Dec 02 14:45 config.txt
│ │ │ │ │ │ │
│ │ │ │ │ │ └─ 文件名
│ │ │ │ │ └────────────── 最后修改时间
│ │ │ │ └────────────────── 大小(字节)
│ │ │ └────────────────────────── 所属组
│ │ └───────────────────────────────── 所有者
│ └─────────────────────────────────── 链接数
└─────────────────────────────────────────────── 类型 + 权限
文件类型详解
普通文件 (-)
-rw-r--r-- 1 ubuntu ubuntu 156 Dec 02 14:45 config.txt
常见文件:文本、图片、二进制、脚本等。
目录 (d)
drwxr-xr-x 2 ubuntu ubuntu 4096 Dec 01 10:23 documents
文件夹。显示的大小是元数据大小,而不是其中所有文件的总大小。
符号链接 (l)
lrwxrwxrwx 1 ubuntu ubuntu 15 Dec 03 09:12 link -> /home/file
指向其他文件的快捷方式。如果目标被删除,链接会变成失效。
字符设备 (c)
crw-rw---- 1 root tty 136, 0 Dec 06 08:15 tty0
一次传输一个字符的数据设备(如终端、键盘)。位于 /dev/ 下。
块设备 (b)
brw-rw---- 1 root disk 8, 0 Dec 06 10:00 sda
一次传输一个块的数据设备(硬盘、U 盘等)。位于 /dev/ 下。
套接字 (s)
srwxrwxrwx 1 root root 0 Dec 04 12:30 mysql.sock
用于进程间通信,常见于 /var/run/ 或 /tmp/。
命名管道 (p)
prw-r--r-- 1 ubuntu ubuntu 0 Dec 03 15:20 mypipe
通过 FIFO 队列让进程通信,使用较少。
Linux 目录结构
所有内容都从 /(根)开始:
/ 根目录
├── bin/ 必要命令(ls、cp、cat)
├── boot/ 引导加载器、内核
├── dev/ 设备文件
├── etc/ 配置文件
├── home/ 用户目录
│ └── ubuntu/ 你的家目录
├── lib/ 共享库
├── media/ 可移动媒体挂载点
├── mnt/ 临时挂载点
├── opt/ 可选软件
├── proc/ 进程信息(虚拟)
├── root/ root 用户的家目录
├── run/ 运行时进程数据
├── sbin/ 系统管理员命令
├── srv/ 服务数据(web、FTP)
├── sys/ 内核/硬件信息(虚拟)
├── tmp/ 临时文件(重启后清除)
├── usr/ 用户程序
│ ├── bin/ 用户命令
│ ├── lib/ 程序库
│ └── local/ 本地安装的软件
└── var/ 可变数据
├── log/ 日志文件
├── www/ Web 服务器文件
└── tmp/ 重启后保留的临时文件
关键目录
| 目录 | 用途 | 示例用法 |
|---|---|---|
/home/ | 个人文件 | /home/ubuntu/documents/ |
/etc/ | 系统配置 | /etc/nginx/nginx.conf |
/var/log/ | 日志文件 | /var/log/syslog |
/tmp/ | 临时文件(重启后清除) | — |
/dev/ | 设备文件 | /dev/sda(硬盘) |
/usr/bin/ | 程序 | /usr/bin/python3 |
实用命令
基本列出
ls -ltr
包含隐藏文件
ls -ltra # 显示以 . 开头的文件,如 .bashrc
人类可读的大小
ls -ltrh # 将 1572864 显示为 1.5M
检查特定目录
ls -ltr /var/log
只列出目录
ls -ltrd */
按大小排序
ls -lSrh # -S = 按大小排序
常见错误
❌ 错误 #1:未使用 -h
ls -ltr
# 输出: -rw-r--r-- 1 ubuntu ubuntu 1572864 Dec 06 10:00 file.txt
# 谁能立刻看出 1572864 字节是多少?
✅ 正确做法:
ls -ltrh
# 输出: -rw-r--r-- 1 ubuntu ubuntu 1.5M Dec 06 10:00 file.txt
# 一眼可读
❌ 错误 #2:遗漏隐藏文件
ls -ltr
# 看不到 .bashrc、.ssh/、.gitconfig 等
✅ 正确做法:
ls -ltra
# 显示所有文件,包括隐藏的
❌ 错误 #3:在错误位置查找日志
ls /tmp/application.log # 错误位置
✅ 正确做法:
ls /var/log/application.log # 正确位置
实际案例
检查配置文件的所有者
ls -l /etc/nginx/nginx.conf