
从“太空大战”到命令行艺术一堂课带你穿越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、OELdebDebian、Ubuntu、Kali Linux其他ArchLinux、Gentoo1.7 CentOS 的命运转折2014年CentOS加入Red Hat2020年12月红帽宣布CentOS 8将于2021年底停止更新不会再有CentOS 9CentOS 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建议关闭节省内存资源网络配置手动设置静态IPIP10.1.8.10子网掩码24网关10.1.8.2DNS223.5.5.5223.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 什么是 ShellShell 是命令解释器负责解析用户在终端输入的字符串交给Kernel执行并返回结果。Bash是Linux中最成功的Shell也是用户的默认Shell。4.2 命令提示符[laomaCentOS7 ~]$ # 普通用户提示符$结尾 [rootCentOS7 ~]# # 管理员/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 executable5.3 cat —— 一次性读取文件cat /etc/hosts cat -A /etc/hosts # 显示隐藏字符行尾$制表符^I5.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显示所有匹配项pasTabTab # 显示 passwd paste pasuspender passTab # 自动补全为 passwd5.8 history —— 历史命令管理history # 显示历史命令列表 history -c # 清空历史 !2 # 执行历史第2条命令 !ho # 执行最近以ho开头的命令 history -w # 写入 ~/.bash_history5.9 Bash 快捷键效率翻倍快捷键作用Ctrl A/Home跳到行首Ctrl E/End跳到行尾Ctrl U删除光标前所有内容Ctrl K删除光标后所有内容Ctrl R搜索历史命令Ctrl L清屏同clearCtrl 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 file26.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