从“太空大战”到命令行艺术:一堂课带你穿越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

在这里插入图片描述
在这里插入图片描述

安装配置要点

  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
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐