从“太空大战”到命令行艺术:一堂课带你穿越Linux的前世今生

📅 2026/7/16 3:49:25 👁️ 阅读次数 📝 编程学习
从“太空大战”到命令行艺术:一堂课带你穿越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 今生:发行版百花齐放

包管理系统代表发行版
rpmRHEL、Fedora、CentOS、Rocky、OEL
debDebian、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


安装配置要点

  1. 软件选择:带 GUI 的服务器
  2. 分区:自动配置分区(新手友好)
  3. Kdump:建议关闭(节省内存资源)
  4. 网络配置(手动设置静态IP):
    • IP:10.1.8.10
    • 子网掩码:24
    • 网关:10.1.8.2
    • DNS:223.5.5.5,223.6.6.6
  5. 主机名:自定义设置
  6. Root密码:推荐6位以上的密码
  7. 创建普通用户:如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