2.Linux 基础知识笔记

2025 字
10 分钟
2.Linux 基础知识笔记

📁 文件颜色与类型#

一、终端中文件的颜色含义(ls --color#

颜色含义
🔵 蓝色目录(Directory)
🟢 绿色可执行文件(Executable files),如二进制程序
🔴 红色压缩包或归档文件(如 .tar, .zip
⚪ 白色普通文件(文本、配置、源码等)
🔵 浅蓝色符号链接(Symbolic link),由 ln -s 创建
💣 红色闪烁损坏的符号链接(指向不存在的目标)
🟡 黄色/黑色背景设备文件(/dev 下的块设备或字符设备)
⬛ 灰色其他特殊文件(如套接字 socket、管道等)

✅ 提示:颜色可能因终端主题或系统配置略有差异,建议结合 filels -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位系统
几乎所有命令都依赖这些库
/syssysfs 虚拟文件系统,导出内核对象(设备、驱动等)为文件形式供用户空间访问
反映设备拓扑结构,常用于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 系列文件系统中存在,正常情况下为空

五、用户与家目录#

目录说明
/rootroot 用户的主目录,非 /home/root
/home普通用户的主目录集合,每个用户拥有一个同名子目录(如 /home/alice
存放个人配置、文档等
/usrUnix 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 转发) |


七、扩展与服务相关目录#

目录说明
/optOptional Applications,第三方商业软件推荐安装位置(如 Google Chrome, MATLAB)
各软件独立成目录(如 /opt/google/chrome
/srvServices’ 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*bab, axb, axyzb
?匹配 单个 任意字符a?baab, abb, a0b
[abc]匹配括号内 任一单一字符a[xy]zaxz, ayz
[!abc][^abc]匹配 不在括号中 的任何一个字符a[!0-9]baxb, aab, a-b
[a-z]匹配范围内的单个字符(支持字母和数字)a[0-9]ba0b, a1b, …, a9b
[!a-z][^a-z]不在指定范围内的字符a[!0-9]baxb, aAb, a_b
{str1,str2,...}匹配多个字符串之一(花括号展开)a{hello,world}bahellob, 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' 输出字面量

💬 小贴士:

  • 使用 \ 可对空格、*$ 等进行转义避免误解释。
  • 推荐优先使用 $(...) 替代反引号 `...` 进行命令替换。

文章目录