Linux 入门与基础命令
Linux 入门与基础命令
一、 Linux 历史与架构演进
1. 操作系统内核核心职责
内核(Kernel)主要负责管理:进程调度、内存管理、文件系统、驱动、网络。
2. 从 Unix 到 Linux
- Unix 与 C 语言:Unix 后来走向闭源商业化(如今 Unix 的正统继承者之一是 macOS),但它奠定了操作系统的三大底层理念:
- 一切皆文件(包括硬件设备、Socket、管道等)
- Pipe(管道)(小型程序协同工作)
- 多用户与隔离
- GNU 项目:旨在打造一套自由的类 Unix 系统,提供了一系列关键组件与核心软件(如
gcc编译器、bash、gdb、glibc),但官方内核(Hurd)迟迟未能广泛落地。 - Linux 内核:由 Linus Torvalds 按照 Unix 标准编写的开源操作系统内核,实现了内存管理、进程调度、文件系统、网络和设备驱动。
- GNU/Linux 结合:
GNU 套件 + Linux 内核共同构成了现代类 Unix 操作系统。
3. Linux 发行版生态
- 构成公式:
Linux 发行版 = GNU 套件 + Linux 内核 + 包管理器 + (可选桌面环境和预装软件) - 主流派系:
- Debian 系:使用
.deb包格式与apt包管理工具(代表:Ubuntu)。 - RedHat 系:拥有强大的商业背书,使用
.rpm包格式与dnf/yum包管理工具。
- Debian 系:使用
二、 常用基础命令速查
1. 目录与文件操作
cd -:快速返回上一个工作目录。touch:更新文件时间戳。若对一个已存在的文件执行touch,只会更新其时间戳(atime/mtime),不会修改或清空文件内容;若文件不存在则创建空文件。file <filename>:检查文件的真实类型(不依赖文件后缀名,通过魔数 Magic Number 识别)。
2. 文本查看与处理
less:分页滚动查看大文件(按需加载,不一次性读入全部内存)。head:查看文件开头几行。tail:查看文件末尾几行(常配合-f实时追踪日志)。join:类似 SQL 的JOIN操作,基于共同字段合并两个已排序文件的行。
3. 历史命令与命令检索
history:查看历史命令记录。!!:直接执行上一条命令。!{index}(如!103):直接执行历史记录中的第 103 条命令。
type:查看命令的真实身份(区分是 Shell 内建命令还是外部二进制程序)。bakapiano@DESKTOP-NN9GVHM:/etc$ type cd cd is a shell builtin bakapiano@DESKTOP-NN9GVHM:/etc$ type docker docker is /usr/bin/dockerwhatis:查询命令的简短功能说明(基于简版手册页)。whereis:查找命令的二进制文件、源码和帮助手册页位置。
三、 Bash 管道、I/O 重定向与进程环境
1. 标准文件描述符(File Descriptors)
0:stdin(标准输入)1:stdout(标准输出)2:stderr(标准错误输出)
2. 管道原则与三通管道
- 管道设计哲学:Bash 使得每个程序只关注标准输入和标准输出,从而实现程序间的解耦。
|(匿名管道):将前一个命令的stdout直接连接到下一个命令的stdin。tee(三通管道):将stdin的数据同时分流输出到stdout和指定文件中,各保存/传递一份。xxx | tee temp.txt | xxx
3. 环境变量与子进程机制
env:查看当前环境变量。环境变量跟随当前进程存在。fork与写时复制(COW, Copy-On-Write):当父进程fork创建子进程时,会复制父进程的环境变量与上下文信息,底层内存采用写时复制(COW)机制以优化性能。