编辑 GUID:38f0adeb-3bff-428d-861d-6c11fdc2d886
编辑 UTC 日期和时间: 2025-07-27T02:07:39Z
编辑 UNIX 时间戳:1753582064
Linux网络操作系统知识归集
项目1 Linux操作系统的安装与使用
1.Linux操作系统的起源与发展
• Linux操作系统的诞生与unix操作系统息息相关
• Linux系统起源与unix,unix操作系统是1969年由肯·汤普森和丹尼斯·里奇两位博士在贝尔实验室开发的一款操作系统
• 1991年10月5日,诞生了Linux内核,并诞生了第一个Linux操作系统,由林纳斯·托瓦兹和其他开发人员完成
GNU与GPL分别是什么?
# GNU 和 GPL 核心概念解析1. GNU
全称:GNU’s Not Unix(递归缩写,意为 “GNU 不是 Unix”)
定义:GNU 是一个由理查德・斯托曼(Richard Stallman)于 1983 年发起的自由软件项目,目标是开发一个完全自由、与 UNIX 兼容的操作系统(即 GNU 操作系统),确保用户对软件拥有使用、修改、复制和分发的自由。
核心理念:
- 倡导 “自由软件”(Free Software),这里的 “自由” 指用户拥有四大自由:
- 自由运行软件(无论目的);
- 自由研究软件工作原理并修改它(获得源代码是前提);
- 自由再分发副本(帮助他人);
- 自由改进软件并公开发布改进版(让整个社区受益)。
主要成果:
GNU 项目开发了大量自由软件工具,构成了操作系统的核心组件,例如:
- 编译器(GCC)
- 编辑器(Emacs)
- shell(Bash)
- 文件工具(coreutils)等。
这些工具后来与 Linux 内核结合,形成了我们通常所说的 “Linux 操作系统”(严格来说应称为 “GNU/Linux 操作系统”,因为内核是 Linux,其他大部分工具来自 GNU)。
2. GPL
全称:GNU General Public License(GNU 通用公共许可证)
定义:GPL 是由 GNU 项目制定的软件许可证协议,旨在保护自由软件的 “自由”,确保软件及其修改版始终保持开源和自由可分发。
核心条款:
- copyleft(著佐权):与传统版权(copyright)限制传播不同,copyleft 要求软件的修改版或衍生作品必须以相同的 GPL 许可证发布,且必须公开源代码,确保自由的 “传染性”。
- 允许商业使用、修改和分发,但禁止将软件闭源或限制他人的自由权利。
- 例如,若你修改了一个 GPL 许可的程序并发布,必须同时提供修改后的源代码,且衍生作品也需遵循 GPL。
版本:
- 常见版本包括 GPLv2(1991 年)和 GPLv3(2007 年,增加了对数字版权管理、专利授权等问题的约束)。
GNU 与 GPL 的关系
GPL 是 GNU 项目为实现其自由软件理念而设计的核心许可证。GNU 项目开发的软件几乎都采用 GPL 许可,通过法律条款确保软件的自由属性不被剥夺。简单来说:
- GNU 是项目和理念,目标是创建自由操作系统;
- GPL 是法律工具,保障这一理念的实现。
二者共同推动了自由软件社区的发展,也是 Linux 等开源系统能够广泛传播的重要基础(Linux 内核采用 GPLv2 许可)。
2.Linux操作系统的发行版本
• Linux操作系统的发行版本主要分为两类,分别是由商业公司维护的商业版本,代表版本为(Red Hat Enterprise Linux),另一类是由社区维护的社区版本,代表版本为debian
• 由社区维护的分支版本,常见的有Fedora、Centos、Debian、Unbuntu、Gentoo
3.Linux操作系统的特点
• 完全免费、完全兼容POXIX 1.0标准、支持多用户多任务、良好的界面、强大的网络功能、安全稳定、支持多平台
4.Linux操作系统的应用领域
• 服务器领域、嵌入式应用领域、个人桌面领域
5.Linux图形用户界面
• 常用的图形用户界面分为KDE和GNOME两种
5.Linux的shell
• 常见的shell界面有bsh、csh、ksh、bash,以下是详细介绍
BSH (Bourne Shell)
- 起源:由Stephen Bourne于1977年在贝尔实验室开发,是UNIX系统上最早流行的shell之一。
- 特点
- 语法简洁:设计初衷是提供高效脚本执行,语法较为基础,适合简单任务自动化。
- 变量处理:变量无需类型声明,通过
$符号引用(如$VAR)。 - 控制结构:支持基本的条件判断(
if-then-else)和循环(for、while)。 - 兼容性:许多现代shell(如Bash)保留了对Bourne语法的兼容。
- 局限性
- 交互性差:缺乏命令历史、命令补全等人性化功能。
- 数组支持有限:仅支持简单变量,无内置数组类型。
- 典型应用场景:在早期UNIX系统中广泛使用,现常用于需要最小依赖的脚本(如系统启动脚本)。
CSH (C Shell)
- 起源:由Bill Joy于1978年开发,语法类似C语言,故得名。
- 特点
- C风格语法:支持
foreach、if-else等结构,更接近编程语言的语法习惯。 - 交互式功能:引入命令历史(
history命令)、别名(alias)等增强交互体验的功能。 - 作业控制:支持后台任务管理(如
&、jobs、fg、bg命令)。
- C风格语法:支持
- 局限性
- 脚本编程弱:变量处理和流程控制不如Bourne系列灵活,不适合复杂脚本。
- 兼容性问题:语法与Bourne Shell差异较大,脚本移植性差。
- 典型应用场景:曾广泛用于BSD系统,现多用于交互式会话(如快速命令测试)。
KSH (Korn Shell)
- 起源:由David Korn于1983年开发,融合了Bourne Shell的功能和C Shell的交互特性。
- 特点
- 功能增强:支持数组、关联数组、函数、正则表达式等高级特性。
- 脚本效率:执行速度快,适合高性能计算和复杂脚本。
- POSIX兼容:严格遵循POSIX标准,脚本可移植性强。
- 交互功能:集成命令历史、命令补全、行编辑等功能。
- 版本分支
- ksh88:最初版本,强调兼容性。
- ksh93:添加更多高级特性(如浮点运算)。
- pdksh:开源实现,用于许多UNIX和Linux发行版。
- 典型应用场景:企业级脚本开发、需要高性能的系统工具。
BASH (Bourne Again SHell)
- 起源:由Brian Fox于1989年为GNU项目开发,作为Bourne Shell的替代品。
- 特点
- 兼容性强:完全兼容Bourne Shell语法,支持大多数Korn Shell特性。
- 交互性优化:提供高级命令补全、命令历史搜索(如
Ctrl+R)、语法高亮等。 - 脚本功能:支持函数、数组、数学运算、正则表达式匹配等。
- 环境定制:通过
.bashrc和.bash_profile实现个性化配置。
- 版本演进:从Bash 1.0到最新的Bash 5.x,不断添加新功能(如
mapfile、readarray)。 - 典型应用场景:几乎所有Linux发行版的默认shell,广泛用于日常交互和脚本编程。
对比总结
| 特性 | BSH | CSH | KSH | BASH |
|---|---|---|---|---|
| 语法兼容性 | 基础Bourne语法 | C语言风格 | 兼容Bourne+扩展 | 兼容Bourne+KSH |
| 命令历史 | ❌ | ✅ | ✅ | ✅(更强大) |
| 数组支持 | ❌ | 有限支持 | ✅(多维数组) | ✅(一维数组) |
| 函数支持 | 有限 | ✅ | ✅ | ✅ |
| POSIX兼容性 | 部分支持 | ❌ | ✅ | ✅ |
| 默认系统 | 早期UNIX | BSD系统 | Solaris、AIX | Linux、macOS |
| 脚本性能 | 高效 | 中等 | 高效 | 高效 |
| 学习难度 | 低 | 中等(C语法) | 高(功能复杂) | 中等(功能丰富) |
选择建议
- 初学者:Bash(易用性和社区支持最佳)。
- 脚本开发:Bash或KSH(功能全面,兼容性好)。
- BSD系统用户:C Shell(传统选择)。
- 高性能需求:KSH或Bash(避免C Shell)。
• 博客评论系统使用的是GitHub的issues,用户评论只需要登录你的GitHub账号即可评论
• 博客文章,可以直接在评论区进行相关的评论
• 博客文章,如果需要进一步交流讨论的,可以加入Telegram频道以及Telegram群组
Telegram群组[点击下方链接即可跳转Telegram群组页面]
Telegram频道[点击下方链接即可跳转Telegram频道页面]
文章Bug反馈
• 对文章提出Bug可以点击上方链接进行Bug反馈的直达,如果不会参照Bug反馈格式例子自己编写Markdown代码的话,可以复制下面提供的代码进行Bug的提交,只有在按照Bug反馈格式进行提交的Bug才会进行处理,否则不处理
Bug反馈例子 Markdown 源码
|Bug名称|Bug链接指向|Bug严重性|Bug是否已修复|
|-|-|-|-|
|-|-|-|-|