从“太空大战”到命令行艺术:一堂课带你穿越Linux的前世今生
从“太空大战”到命令行艺术:一堂课带你穿越Linux的前世今生
你知道吗?Linux的诞生,竟然源于一位程序员想打游戏却找不到合适的操作系统……
前言
今天是我学习Linux的第一天,内容从Linux的历史渊源,到CentOS 7.9的系统安装,再到命令行基础操作,信息量相当大。这篇文章将完整梳理今日所学,既是复习巩固,也希望能帮助到同样在入门路上的小伙伴。
一、Linux 前世今生:一场跨越半个世纪的开源史诗
1.1 Multics 计划:一个过于宏大的梦想
上世纪60年代,计算机还是“批处理”模式——把一批任务一次性提交给计算机,然后漫长等待结果,中途无法交互,资源利用率极低。
1965年,贝尔实验室、麻省理工学院、通用电气联手,准备研发一个分时多任务处理系统——Multics(多路信息计算系统)。可惜目标过于庞大,1969年贝尔实验室因成本问题退出了该项目。

1.2 Unix 诞生:三周写出的操作系统
贝尔实验室退出后,程序员 Ken Thompson 遇到了“幸福的烦恼”——他之前在Multics上写了一个叫“太空大战”的游戏,现在没系统可跑了。
为了继续打游戏,他找来一台老旧的PDP-7设备,用三周时间完成了一个微型操作系统:
- 第一周:实现 Shell
- 第二周:实现编辑器
- 第三周:实现汇编器
同事 Brian Kernighan 提议取名 Unics(谐音Unix),意为“单一的”,与Multics的“多路”形成对比。
巧合的是:1969年12月28日,Unix诞生的同一年,Linus Torvalds出生了。
1.3 Minix:为教学而生的“教学版Unix”
Unix商业化后,一份授权高达4万美元,大学纷纷买不起。1987年,荷兰教授 Andrew S. Tanenbaum 写了 Minix——一个专用于教学的“迷你Unix”,并提供了完整源码。
但Minix不允许随意修改,这让很多黑客感到遗憾。
1.4 Linux 诞生:一个大学生的“叛逆”之作

1991年,芬兰大学生 Linus Torvalds 对Minix的限制非常不满,于是参照Minix自己写了一个操作系统内核,并在互联网上发帖:
“我写了一个操作系统的内核,还不够完善,你们可以免费使用,也可以帮我改进。”
1994年,Linux 1.0 正式发布。
名人轶事:Linus 脾气火爆,2012年曾对NVIDIA爆粗,因为其显卡驱动未开源整合到Linux内核中。
1.5 GNU/Linux:两个伟大项目的结合
GNU计划由Richard Stallman于1983年发起,目标是创建一套完全自由的操作系统。到1991年Linux内核发布时,GNU已经几乎完成了除内核之外的所有必备软件。
两者结合,形成了我们今天所说的 GNU/Linux 操作系统。
1.6 Linux 今生:发行版百花齐放
| 包管理系统 | 代表发行版 |
|---|---|
| rpm | RHEL、Fedora、CentOS、Rocky、OEL |
| deb | Debian、Ubuntu、Kali Linux |
| 其他 | ArchLinux、Gentoo |
1.7 CentOS 的命运转折
- 2014年,CentOS加入Red Hat
- 2020年12月,红帽宣布:CentOS 8将于2021年底停止更新,不会再有CentOS 9
- CentOS 7 维护至2024年6月30日
- 取而代之的是 CentOS Stream(滚动更新的上游开发平台)
二、CentOS 7.9 系统安装(VMware环境)
关键步骤速记
| 步骤 | 要点 |
|---|---|
| 新建虚拟机 | 自定义 → 稍后安装系统 → Linux → CentOS 7 64位 |
| CPU | 分配 2核 |
| 内存 | 分配 4GB |
| 网络 | 选择 NAT 模式 |
| 硬盘 | 建议 80-200GB |
| 系统镜像 | 挂载 CentOS-7-x86_64-DVD-2207-02.iso |


安装配置要点
- 软件选择:带 GUI 的服务器

- 分区:自动配置分区(新手友好)

- Kdump:建议关闭(节省内存资源)

- 网络配置(手动设置静态IP):
- IP:10.1.8.10
- 子网掩码:24
- 网关:10.1.8.2
- DNS:223.5.5.5,223.6.6.6

- 主机名:自定义设置
- Root密码:推荐6位以上的密码
- 创建普通用户:如
User
⚠️ 重要:安装完成后,关机打快照
三、桌面环境初体验
3.1 终端设置
| 快捷键 | 作用 |
|---|---|
Ctrl + Shift + N |
新建终端 |
Ctrl + Shift + T |
新建标签页 |
3.2 虚拟控制台
通过 Ctrl + Alt + F1~F6 切换不同的虚拟终端(tty1~tty6),其中 tty1 是图形化界面所在终端。

四、Linux 命令行基础
4.1 什么是 Shell?
Shell 是命令解释器,负责解析用户在终端输入的字符串,交给Kernel执行,并返回结果。
Bash 是Linux中最成功的Shell,也是用户的默认Shell。
4.2 命令提示符
[laoma@CentOS7 ~]$ # 普通用户提示符($结尾)
[root@CentOS7 ~]# # 管理员/root提示符(#结尾)
4.3 Shell 命令语法结构
命令 [选项] [参数]
- 命令:要执行的程序(必须是第一个词)
- 选项:调整命令行为,通常以
-或--开头 - 参数:命令的目标对象
示例:
ls -l /home
# ls = 命令,-l = 选项,/home = 参数
4.4 一行执行多个命令
用分号 ; 分隔:
ls; date; hostname
五、常用命令精讲
5.1 passwd —— 管理用户密码
# 普通用户修改自己的密码
passwd
# root修改他人密码
passwd laoma
# 删除用户密码(免密登录)
passwd -d laoma
# 锁定/解锁用户
passwd -l laoma # 锁定
passwd -u laoma # 解锁
5.2 file —— 判定文件类型
file /etc/hosts # ASCII text
file /bin/file # ELF 64-bit executable
5.3 cat —— 一次性读取文件
cat /etc/hosts
cat -A /etc/hosts # 显示隐藏字符(行尾$,制表符^I)
5.4 head / tail —— 查看文件头尾
head -n 4 /etc/profile # 前4行
head -n -3 /etc/profile # 除最后3行外的所有行
tail -n 4 /etc/profile # 最后4行
tail -n +4 /etc/profile # 从第4行到结尾
5.5 less —— 交互式翻页查看
常用快捷键:
/关键字:搜索n/N:下一个/上一个匹配PageUp/PageDown:翻页q:退出
5.6 wc —— 统计工具
wc /etc/hosts # 行数 单词数 字节数
wc -l /etc/hosts # 仅行数
5.7 Tab 补全 —— 效率神器
- 按1次Tab:唯一匹配,自动补全
- 按2次Tab:显示所有匹配项
pas<Tab><Tab> # 显示 passwd paste pasuspender
pass<Tab> # 自动补全为 passwd
5.8 history —— 历史命令管理
history # 显示历史命令列表
history -c # 清空历史
!2 # 执行历史第2条命令
!ho # 执行最近以ho开头的命令
history -w # 写入 ~/.bash_history
5.9 Bash 快捷键(效率翻倍)
| 快捷键 | 作用 |
|---|---|
Ctrl + A / Home |
跳到行首 |
Ctrl + E / End |
跳到行尾 |
Ctrl + U |
删除光标前所有内容 |
Ctrl + K |
删除光标后所有内容 |
Ctrl + R |
搜索历史命令 |
Ctrl + L |
清屏(同clear) |
Ctrl + D |
退出终端 |
Esc + . |
粘贴上一个命令的最后一个参数 |
六、文件管理核心操作
6.1 路径导航
| 符号 | 含义 |
|---|---|
/ |
根目录 |
~ |
当前用户家目录 |
. |
当前目录 |
.. |
上一级目录 |
- |
上一次所在目录 |
pwd # 显示当前路径
cd /usr/bin # 切换目录
cd ~ # 回家
cd .. # 到上级目录
cd - # 回上一个目录
6.2 ls 常用选项
ls -l # 长格式列表
ls -a # 显示隐藏文件
ls -R # 递归显示子目录
ls -t # 按时间排序
ls -r # 反向排序
ls -d # 仅查看目录本身
ls -1 # 单列输出
6.3 touch —— 创建文件/更新时间戳
touch file.txt # 文件不存在则创建,存在则更新时间戳
touch -c file.txt # 文件不存在也不创建
touch -t 202212141200.00 file.txt # 指定时间
6.4 mkdir —— 创建目录
mkdir dir1
mkdir -p dir1/dir2/dir3 # 级联创建
6.5 cp —— 复制
| 场景 | 命令 |
|---|---|
| 复制文件 | cp file1 file2 |
| 复制到目录 | cp file1 file2 dir/ |
| 复制目录 | cp -r dir1 dir2 |
| 覆盖前提示 | cp -i file1 file2 |
6.6 mv —— 移动/重命名
mv file1 file2 # 重命名(同一目录下)
mv file1 dir/ # 移动到目录
mv file1 file2 dir/ # 多个文件移到目录
6.7 rm —— 删除(⚠️ 谨慎操作)
rm file.txt # 删除文件
rm -f file.txt # 强制删除(不提示)
rm -r dir/ # 递归删除目录
rm -rf dir/ # 强制递归删除(最危险!)
6.8 软连接 vs 硬连接
| 特性 | 软连接(Symbolic Link) | 硬连接(Hard Link) |
|---|---|---|
| 本质 | 快捷方式(指向路径) | 普通文件(指向数据块) |
| 创建 | ln -s 源 目标 |
ln 源 目标 |
| inode | 不同 | 相同 |
| 跨文件系统 | 支持 | 不支持 |
| 源文件删除 | 连接失效 | 仍可访问数据 |
七、Shell 路径扩展(通配符)
| 模式 | 匹配说明 |
|---|---|
* |
零个或多个任意字符(不匹配隐藏文件) |
? |
任意单个字符 |
[abc] |
括号中的任一字符 |
[^abc] / [!abc] |
不在括号中的任一字符 |
[0-9] |
数字范围 |
[[:alpha:]] |
任意字母 |
[[:digit:]] |
任意数字 |
{1..5} |
数字范围扩展 |
~ |
当前用户家目录 |
示例:
ls /etc/ho* # 匹配所有ho开头的文件
ls file-? # file-后跟1个字符
ls file-[a-c] # file-a, file-b, file-c
ls file-{1..5} # file-1 到 file-5
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)