Linux 简介
要说 Linux 就不得不说说 UNIX 和 GNU 了。
UNIX 和 GNU
UNIX 操作系统最初由贝尔实验室开发,是第一个多用户、多任务的操作系统。
后来 UNIX 变成了 Open Group (开放组织)管理的商标,指向一种遵循特定规范的操作系统。这种规范又被称为单一 UNIX 规范,定义了所以必需的 UNIX 操作系统函数的名称、接口和行为。
只有遵循了 UNIX 规范的操作系统才会被冠以 UNIX 之名。其他的都被称为类 UNIX。如今只有少数的操作系统还遵循 UNIX 规范。
UNIX 特点
UNIX 鼓励的编程风格包括以下几点:
- 简单性:工具应当小而简单,便于快速理解,避免大而复杂的系统,导致复杂的错误难以调试;
- 集中性:每个程序遵顼自己的单一职责,管得太多不论是开发调试还是维护升级都很困难;
- 可重用组件:将程序的核心功能实现为库,用灵活的接口、完备的文档吸引更多的人将技术拓展到其他领域;
- 过滤器:
- 开放的文件格式:采用统一的文件格式进行数据文件和配置文件的编写,比如统一使用 ASCII 文本文件或 XML 文件。便于使用标准化工具查找和修改;
- 灵活性:对于程序的输入/输出尽量避免随意地限制长度和记录数目,保证程序使用的灵活性;
GNU(GNU’s NOT UNIX)
自由软件的概念:软件本身不应当受到限制应该开源,主张获得软件可能需要费用,但此后可以随意使用他们。
后来有个叫 Richard Stallman 的人创立了一个叫 自由软件基金会(Free Software Foundation) 的组织,并发起了一个叫 GNU 的项目。项目的宗旨就是建立一个兼容 UNIX 操作系统,但是开源的操作系统+开发环境。
项目发起后,得到了很多开发者的支持。出现了许多 UNIX 应用的仿制品,像 GCC G++ GDB GNU make Bison bash Emacs 等等。并且 GNU 项目下的软件都遵循 GNU 通用公共许可证 GPL。这个许可证对商业很不友好,它为了防止自由软件被限制,要求所有使用了遵循 GPL 协议的代码的软件都遵守 GPL 协议,即开源。就像传染病一样,别的软件一伸手就变成了 GPL 的形状了。
什么是 Linux
Linux 是有名的开源类 UNIX 操作系统,由 Linus Torvalds 于 1991 年开发,遵循 GNU 开源协议。由于系统较高的代码质量,很快就得到了大量的开发者支持。
后来,Linux 操作系统的内核被加上了各种各样的软件套装,封装成了各种各样的发行版。包括 RHEL、CentOS、Fedora、openSUSE、Gentoo、Debian、Ubuntu等等。
从此 Linux 内核继续由 Linus Torvalds 维护,而其他的发行版,由相应的开源社区或相关企业进行维护。
Linux 哲学
- “集百家之长,方可无敌于天下。”
从代码级、函数级、软件包级、系统级方方面面都体现了以上哲学,面对复杂的问题,通过综合使用多个软件、函数等等便可解决。 Windows 则恰恰相反,寄希望于一个软件可以解决许多问题,最终软件便庞大臃肿。
说说 Ubuntu
作为最流行的 Linux 发行版之一,Ubuntu 受到一众 Linux 爱好者的欢迎。每个 Linux 版本都包含一个由发布时间决定的版本号,例如 2018 年 4 月发布的版本号为 18.04,若为 18 年 10 月发布的就为 18.10,若带有 LTS 标识的版本,意思就是 Long Term Support,拥有较长的维护时间,桌面端一般是 3 年,服务端一般是 5 年。
除了版本号外,每个版本还有一个通俗的版本名,通常与动物有关,比如版本6.06的代码名是Dapper Drake(绅士鸭),6.10是Edgy Eft(小心的蜥蜴),7.04是Feisty Fawn(勇敢的小鹿),7.10是Gutsy Gibbon(大胆的长臂猿)。
如何查看 Linux 版本:https://linux.cn/article-9586-1.html
Linux 程序
Linux 的程序分为 可执行程序 和 脚本文件。
- 可执行程序由计算机直接执行;
- 脚本文件依赖于解释器程序的存在;
Linux 不以特殊的文件名或者扩展名来区分他们,而以 文件系统属性 来指明,这一点与 Windows 不同。
在 Linux 中运行程序一般通过 shell 程序(通常是 bash)。键入要执行的文件名,Linux 会在 shell 变量 PATH 中寻找同名的路径。PATH 包括以下目录,另外还可以自己添加:
/bin:二进制文件目录,用于存放启动系统时用到的程序;/usr/bin:用户~,存放用户要用的;/usr/local/bin:本地~,存放软件安装的程序;
root 用户的 PATH 变量包含更多的目录,比如 /sbin 和 /usr/sbin 是属于系统管理程序的目录。
一些第三方程序有可能被安装在 /opt 下,需要用户自己添加;
ps: 注意 Linux 目录分隔符
/和 windows 的\不同; 注意 Linux 的PATH变量的条目分隔符:不同于 windows 的;。
文本编辑器
Linux 阵营有 Emacs 和 vi/vim ,都挺强大的。
C 语言编译器
C 语言的编译器在标准出现以前,五花八门无法兼容了。后来 POSIX 委员会起草了一份新的 C 语言编译器标准命令——c89。
Linux 上的 C 编译器,无论是 c89 gcc cc 都指向系统的 C 语言编译器或 gcc。
在 UNIX 中一般使用 cc 命令。