author
type
Post
status
Published
date
Feb 16, 2026
slug
summary
tags
Linux
category
运维
icon
password
📁 文件颜色与类型
一、终端中文件的颜色含义(ls --color)
颜色 | 含义 |
🔵 蓝色 | 目录(Directory) |
🟢 绿色 | 可执行文件(Executable files),如二进制程序 |
🔴 红色 | 压缩包或归档文件(如 .tar, .zip) |
⚪ 白色 | 普通文件(文本、配置、源码等) |
🔵 浅蓝色 | 符号链接(Symbolic link),由 ln -s 创建 |
💣 红色闪烁 | 损坏的符号链接(指向不存在的目标) |
🟡 黄色/黑色背景 | 设备文件( /dev 下的块设备或字符设备) |
⬛ 灰色 | 其他特殊文件(如套接字 socket、管道等) |
✅ 提示:颜色可能因终端主题或系统配置略有差异,建议结合file或ls -l判断实际类型。
二、通过权限字符识别文件类型(ls -l 第一个字符)
字符 | 类型 |
- | 普通文件(Regular file) |
d | 目录(Directory) |
l | 符号链接(Symbolic Link) |
b | 块设备文件(Block Device),如硬盘 /dev/sda |
c | 字符设备文件(Character Device),如终端 /dev/tty |
p | 命名管道(Named Pipe / FIFO) |
s | 套接字(Socket) |
📂 Linux 系统目录结构
一、系统启动必需目录
目录 | 说明 |
/boot | 包含内核镜像(vmlinuz)、引导加载程序配置(GRUB)、initramfs 等启动所需文件 |
/etc | 所有系统级配置文件存放地(如 passwd, fstab, network, ssh/sshd_config)<br>⚠️ 修改不当可能导致系统无法启动 |
/lib, /lib64 | 动态链接库(Shared Libraries),类似 Windows 的 DLL<br> /lib 用于32位系统,/lib64 用于64位系统<br>几乎所有命令都依赖这些库 |
/sys | sysfs 虚拟文件系统,导出内核对象(设备、驱动等)为文件形式供用户空间访问<br>反映设备拓扑结构,常用于udev、脚本控制硬件状态 |
二、基础命令目录
目录 | 说明 |
/bin | 存放所有用户可用的基本命令( ls, cp, bash 等)<br>这些是系统启动和运行所必需的核心工具 |
/sbin | 系统管理员专用的管理命令( fdisk, ifconfig, reboot, init)<br>普通用户通常无权执行 |
三、外部设备与挂载点
目录 | 说明 |
/dev | 设备文件目录,Linux 中“一切皆文件”,物理设备在此抽象为文件(如 /dev/sda, /dev/null) |
/media | 即插即用设备的自动挂载点(U盘、光驱、SD卡等)<br>现代桌面发行版会自动挂载到此目录下子目录中 |
/mnt | 手动临时挂载文件系统的目录(如挂载网络存储、ISO镜像)<br>例如: mount /dev/cdrom /mnt 后可访问光盘内容 |
四、临时文件与恢复数据
目录 | 说明 |
/tmp | 所有用户都可使用的临时文件目录<br>系统重启后通常会被清空(某些系统使用 tmpfs 内存存储) |
/run | 运行时数据目录,保存自系统启动以来的状态信息(PID 文件、套接字等)<br>是一个 tmpfs 内存文件系统,重启即清除<br>旧路径 /var/run 是指向 /run 的软链接 |
/lost+found | 特殊目录,用于 e2fsck 等文件系统修复工具存放找回的碎片文件<br>仅在 ext 系列文件系统中存在,正常情况下为空 |
五、用户与家目录
目录 | 说明 |
/root | root 用户的主目录,非 /home/root |
/home | 普通用户的主目录集合,每个用户拥有一个同名子目录(如 /home/alice)<br>存放个人配置、文档等 |
/usr | Unix System Resources — 用户级应用程序、库、文档等资源目录<br>类似于 Windows 的 C:\\Program Files + C:\\Windows\\System32 |
/usr/bin | 非系统启动必需但常用的用户命令(如 git, python, gcc) |
/usr/sbin | 非核心但高级的管理员命令(如 httpd, sshd) |
/usr/src | 内核源码默认存放路径(需安装 kernel-source 包)<br>编译模块或调试内核时用到 |
🔍 注:/usr意为 "Unix System Resources",并非 "user"。
六、运行时与日志数据
目录 | 说明 |
/var | “variable” 的缩写,存放经常变动的数据 |
→ /var/log | 系统和服务的日志文件( messages, auth.log, nginx/access.log 等) |
→ /var/cache | 应用程序缓存(如 APT/YUM 缓存) |
→ /var/spool | 待处理任务队列(打印作业、邮件队列等) |
→ /var/lib | 数据库、包管理系统(如 RPM/APT)的持久化数据 |
|
/proc | 虚拟文件系统(procfs),映射内核和进程信息<br>动态生成于内存中,不占磁盘空间<br>如:<br>• /proc/cpuinfo — CPU信息<br>• /proc/meminfo — 内存信息<br>• /proc/PID — 对应进程信息(可 kill/readlink)<br>支持写入控制某些参数(如启用 IP 转发) |七、扩展与服务相关目录
目录 | 说明 |
/opt | Optional Applications,第三方商业软件推荐安装位置(如 Google Chrome, MATLAB)<br>各软件独立成目录(如 /opt/google/chrome) |
/srv | Services’ data,服务运行所需的静态数据<br>如:<br>• /srv/www → Web 服务器根目录<br>• /srv/ftp → FTP 根目录<br>较少使用,视具体服务配置而定 |
⌨️ Bash 常用快捷键
快捷键 | 功能说明 |
Ctrl + A | 光标跳转到命令行开头 |
Ctrl + E | 光标跳转到命令行结尾 |
Ctrl + C | 终止当前正在运行的命令(发送 SIGINT) |
Ctrl + Z | 挂起当前进程,并放入后台(可用 fg 恢复) |
Ctrl + D | 退出当前 shell 会话(EOF)<br>等价于输入 exit |
Ctrl + L | 清屏,等效于 clear 命令 |
Ctrl + U | 删除/剪切从光标到行首的所有内容 |
Ctrl + K | 删除/剪切从光标到行尾的所有内容 |
Ctrl + Y | 粘贴之前被 Ctrl+U/K 剪切的内容(Yank) |
Ctrl + R | 启动反向历史搜索(Reverse Search)<br>按关键词搜索过往命令 |
Esc + . 或 Alt + . | 插入上一条命令的最后一个参数(如刚用过的文件路径) |
💡 技巧:连续按Ctrl + R可循环查找多条匹配命令。
🌟 通配符
通配符 | 含义 | 示例 |
* | 匹配 任意长度 的任意字符(包括零个字符) | a*b → ab, axb, axyzb |
? | 匹配 单个 任意字符 | a?b → aab, abb, a0b |
[abc] | 匹配括号内 任一单一字符 | a[xy]z → axz, ayz |
[!abc] 或 [^abc] | 匹配 不在括号中 的任何一个字符 | a[!0-9]b → axb, aab, a-b |
[a-z] | 匹配范围内的单个字符(支持字母和数字) | a[0-9]b → a0b, a1b, ..., a9b |
[!a-z] 或 [^a-z] | 不在指定范围内的字符 | a[!0-9]b → axb, aAb, a_b |
{str1,str2,...} | 匹配多个字符串之一(花括号展开) | a{hello,world}b → ahellob, aworldb |
📌 示例增强理解:
⚠️ 元字符(Shell 特殊字符)
字符 | 作用说明 | 示例 |
空格 \\t \\n (IFS) | IFS(Internal Field Separator),用于分隔单词和字段 | ls /home/user 中空格分隔命令与参数 |
CR(Enter) | 表示命令结束并执行 | 每次回车触发执行 |
= | 变量赋值 | name="Alice" |
$ | 取变量值或命令替换 | echo $HOME / `date` 或 $(date) |
> | 重定向标准输出(覆盖) | echo hello > output.txt |
>> | 重定向标准输出(追加) | echo world >> output.txt |
< | 重定向标准输入 | sort < input.txt |
` | ` | 管道:前一个命令输出作为后一个命令输入 |
& | 将命令置于后台运行 | sleep 10 & |
( ) | 创建子 Shell 执行命令列表 | (cd /tmp && pwd) 不影响当前 shell 路径 |
{ } | 在当前 Shell 中执行一组命令(函数语法边界) | { echo a; echo b; } > out.txt |
; | 分隔多个命令,顺序执行(忽略返回值) | cmd1 ; cmd2 |
&& | 逻辑与:前一条成功才执行下一条 | mkdir dir && cd dir |
\|\| | 逻辑或:前一条失败才执行下一条 | command \|\| echo "失败" |
! | 逻辑非(命令行否定或历史命令调用) | !$ 上一个命令最后一个参数;!grep 上次 grep 命令 |
# | 注释符,后面内容被 shell 忽略 | # 这是一条注释 |
\\ | 转义字符,取消下一个字符的特殊含义 | echo \\$HOME 输出 $HOME 而非变量值 |
" " | 双引号:保留大部分字符意义,允许变量展开 | echo "Hello $USER" |
' ' | 单引号:完全引用,禁止任何解析 | echo '$HOME' 输出字面量 |
💬 小贴士:
- 使用
\\可对空格、、$等进行转义避免误解释。
- 推荐优先使用
$(...)替代反引号`...`进行命令替换。
- 作者:NotionNext
- 链接:https://tangly1024.com/article/309db897-8f81-8053-b93c-e3c45a2b45ca
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。











