2025 字
10 分钟
2.Linux 基础知识笔记
📁 文件颜色与类型
一、终端中文件的颜色含义(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)⚠️ 修改不当可能导致系统无法启动 |
/lib, /lib64 | 动态链接库(Shared Libraries),类似 Windows 的 DLL/lib 用于32位系统,/lib64 用于64位系统几乎所有命令都依赖这些库 |
/sys | sysfs 虚拟文件系统,导出内核对象(设备、驱动等)为文件形式供用户空间访问反映设备拓扑结构,常用于udev、脚本控制硬件状态 |
二、基础命令目录
| 目录 | 说明 |
|---|---|
/bin | 存放所有用户可用的基本命令(ls, cp, bash 等)这些是系统启动和运行所必需的核心工具 |
/sbin | 系统管理员专用的管理命令(fdisk, ifconfig, reboot, init)普通用户通常无权执行 |
三、外部设备与挂载点
| 目录 | 说明 |
|---|---|
/dev | 设备文件目录,Linux 中“一切皆文件”,物理设备在此抽象为文件(如 /dev/sda, /dev/null) |
/media | 即插即用设备的自动挂载点(U盘、光驱、SD卡等) 现代桌面发行版会自动挂载到此目录下子目录中 |
/mnt | 手动临时挂载文件系统的目录(如挂载网络存储、ISO镜像) 例如: mount /dev/cdrom /mnt 后可访问光盘内容 |
四、临时文件与恢复数据
| 目录 | 说明 |
|---|---|
/tmp | 所有用户都可使用的临时文件目录 系统重启后通常会被清空(某些系统使用 tmpfs 内存存储) |
/run | 运行时数据目录,保存自系统启动以来的状态信息(PID 文件、套接字等) 是一个 tmpfs 内存文件系统,重启即清除旧路径 /var/run 是指向 /run 的软链接 |
/lost+found | 特殊目录,用于 e2fsck 等文件系统修复工具存放找回的碎片文件仅在 ext 系列文件系统中存在,正常情况下为空 |
五、用户与家目录
| 目录 | 说明 |
|---|---|
/root | root 用户的主目录,非 /home/root |
/home | 普通用户的主目录集合,每个用户拥有一个同名子目录(如 /home/alice)存放个人配置、文档等 |
/usr | Unix System Resources — 用户级应用程序、库、文档等资源目录 类似于 Windows 的 C:\Program Files + C:\Windows\System32 |
/usr/bin | 非系统启动必需但常用的用户命令(如 git, python, gcc) |
/usr/sbin | 非核心但高级的管理员命令(如 httpd, sshd) |
/usr/src | 内核源码默认存放路径(需安装 kernel-source 包) 编译模块或调试内核时用到 |
🔍 注:
/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),映射内核和进程信息
动态生成于内存中,不占磁盘空间
如:
• /proc/cpuinfo — CPU信息
• /proc/meminfo — 内存信息
• /proc/PID — 对应进程信息(可 kill/readlink)
支持写入控制某些参数(如启用 IP 转发) |
七、扩展与服务相关目录
| 目录 | 说明 |
|---|---|
/opt | Optional Applications,第三方商业软件推荐安装位置(如 Google Chrome, MATLAB) 各软件独立成目录(如 /opt/google/chrome) |
/srv | Services’ data,服务运行所需的静态数据 如: • /srv/www → Web 服务器根目录• /srv/ftp → FTP 根目录较少使用,视具体服务配置而定 |
⌨️ Bash 常用快捷键
| 快捷键 | 功能说明 |
|---|---|
Ctrl + A | 光标跳转到命令行开头 |
Ctrl + E | 光标跳转到命令行结尾 |
Ctrl + C | 终止当前正在运行的命令(发送 SIGINT) |
Ctrl + Z | 挂起当前进程,并放入后台(可用 fg 恢复) |
Ctrl + D | 退出当前 shell 会话(EOF) 等价于输入 exit |
Ctrl + L | 清屏,等效于 clear 命令 |
Ctrl + U | 删除/剪切从光标到行首的所有内容 |
Ctrl + K | 删除/剪切从光标到行尾的所有内容 |
Ctrl + Y | 粘贴之前被 Ctrl+U/K 剪切的内容(Yank) |
Ctrl + R | 启动反向历史搜索(Reverse Search) 按关键词搜索过往命令 |
Esc + . 或 Alt + . | 插入上一条命令的最后一个参数(如刚用过的文件路径) |
💡 技巧:连续按
Ctrl + R可循环查找多条匹配命令。
*🌟 通配符(Wildcard / Globbing)
| 通配符 | 含义 | 示例 |
|---|---|---|
* | 匹配 任意长度 的任意字符(包括零个字符) | 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 |
📌 示例增强理解:
Terminal window # 多种组合echo *.txt # 所有 txt 结尾的文件echo file?.log # file1.log, fileA.log 等echo /etc/[ap]* # 所有以 a 或 p 开头的 etc 子文件echo {jpg,png,gif} # 输出 jpg png gif(可用于批量重命名)
⚠️ 元字符(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' 输出字面量 |
💬 小贴士:
- 使用
\可对空格、*、$等进行转义避免误解释。- 推荐优先使用
$(...)替代反引号`...`进行命令替换。