1. Linux多个发行版间的联系与区别
1.1 什么是Linux?
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户,多任务,支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件,应用程序和网络协议。它支持32位和64位硬件,Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1.2 一切要从那个男人开始说起
既然Linux是基于UNIX系统的,因此不得不提到那个创造UNIX系统的男人 Ken Thompson。
1969年的夏天 Ken Thompson 为了能玩到自己制作的“星际旅行”游戏程序而在一台闲置的 PDP-7上开发出了一个及其简易的操作系统,这个简单的操作系统就是后来大名鼎鼎的UNIX系统的雏形。
因此追根溯源,如果乘坐时光飞机要去参观计算机系统的诞生,1969年夏天是一个必须记住的时刻,同时1970年,也被称作UNIX元年。
补充:
UNIX操作系统(英语:UNIX),是美国AT&T公司贝尔实验室于1969年完成的操作系统。最早由肯·汤普逊(Ken Thompson),丹尼斯·里奇(Dennis Ritchie),道格拉斯·麦克罗伊(Douglas McIlroy),和乔伊·欧桑纳于1969年在AT&T贝尔实验室开发。于1971年首次发布,最初是完全用汇编语言编写。后来,在1973年用一个重要的开拓性的方法,Unix被丹尼斯·里奇用编程语言C(内核和I/O例外)重新编写。高级语言编写的操作系统具有更佳的兼容性,能更容易地移植到不同的计算机平台
1.3 GNU
接上文,上个世纪70年代末AT&T终于发现了UNIX的商业价值,于是成立了USG组织,将UNIX变成商业化产品,并规定只有再缴纳不菲的费用后才能够使用UNIX,至此,UNIX系统变成了一个“奢侈品”。
世界上从来都不缺乏反抗者,1983年 Richard Stallman 创立了GNU组织,GNU是“GNU is not UNIX”的递归缩写,GNU组织的理念是提倡Open Source计划,其希望发展处一个完全自由免费的Unix操作系统,但创作的过程异常复杂,所以该项目的发展进度也异常缓慢。
补充:
1983年,理查德·马修·斯托曼创立GNU计划。这个计划有一个目标,是为了发展一个完全自由的类Unix操作系统。自1984年发起这个计划以来,在1985年,理查德·马修·斯托曼发起自由软件基金会并且在1989年撰写GPL。1990年代早期,GNU开始大量地产生或收集各种系统所必备的组件,像是——库、编译器、调试工具、文本编辑器,以及一个Unix的用户界面(Unix shell)——但是像一些底层环境,如硬件驱动、守护进程、系统内核(kernel)仍然不完整和陷于停顿,GNU计划中是在Mach微内核的架构之上开发系统内核,也就是所谓的GNU Hurd,但是这个基于Mach的设计异常复杂,发展进度则相对缓慢。林纳斯·托瓦兹曾说过如果GNU内核在1991年时可以用,他不会自己去写一个。
1.4 Linux的诞生
Linux最早是由芬兰人Linus Torvalds设计的,当时由于UNIX系统的商业化,Andrew Tannebaum 教授开发了Minix操作系统以便不受AT&T许可协议的约束并免费给全世界的学生使用,MINIX有许多UNIX的特点,但与UNIX PC不完全兼容,于是 Linus Torvalds 开始在MINIX上开发Linux内核,为了给MINIX用户设计一个比较有效的UNIX PC版本,他便将该项目上传到Minix新闻组上,毫无疑问,这个项目很快便得到了极大的反响。
于是,Linus Torvalds 在这之上继续扩展功能,并在很多支持者的帮助下开发并推出了Linux的第一个稳定的工作版本:时间1991年11月,版本0.10。
1994年3月,正式的Linux1.0诞生,截止那是,该系统的用户基数已经相当庞大,而且Linux的核心开发团队也建立了起来。
补充:
1991年,林纳斯·托瓦兹在赫尔辛基大学上学时,对操作系统很好奇。他对MINIX只允许在教育上使用很不满(在当时MINIX不允许被用作任何商业使用),于是他便开始写他自己的操作系统,这就是后来的Linux内核。
林纳斯·托瓦兹开始在MINIX上开发Linux内核,为MINIX写的软件也可以在Linux内核上使用。后来使用GNU软件代替MINIX的软件,因为使用从GNU系统来的源代码可以自由使用,这对Linux的发展有益。使用GNU GPL协议的源代码可以被其他项目所使用,只要这些项目使用同样的协议发布。为了让Linux可以在商业上使用,林纳斯·托瓦兹决定更改他原来的协议(这个协议会限制商业使用),以GNU GPL协议来代替。之后许多开发者致力融合GNU元素到Linux中,做出一个有完整功能的、自由的操作系统。
1.5 Linux发行版
Linux发行版为了许多不同应用场景和目的而制作,包括对不同计算机结构的支持,对一个具体区域或语言的本地化,实时应用,嵌入式等。
如今的Linux发行版本可以简单分为两类:一类是为了商业公司维护的发行版本,一类是社区组织维护的发行版本,前者最著名的是RedHat(RHEL)为代表,后者以Debian为代表。
1.6 三大主流发行版
Debain
Debian 是包括Ubuntu在内的许多发行版的上游发行版,Debian 是一个注重系统稳定性的纯开源计划,同时也提供了迄今为止最大和最完整的软件仓库给用户。
Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian 最早由 Ian Murdock 于1993年创立,分为三个分支:stable、testing、unstable。其中unstable为最新的测试版本,其中有最新的软件包,但相对的,BUG也比较多。testing是经过unstable中的测试,相对稳定的版本,也有一些BUG,适合桌面用户,而stable版本一般只适用于服务器。上面的软件和程序比较过时,但是稳定性和安全性都非常高。
Debian最具特色的是apt-get / dpkg包管理方式。
RedHat
RedHat Linux 系列是红帽公司研发的Linux发行版,包括Fedora、RHEL、CentOS和Oracle Linux多种版本,相比RHEL ,Fedora由多样化的社区参与合作,其打包了更多的软件包,所以其内容更加丰富。而CentOS多用于演示和试验,因为它对于用户而言是免费提供的,但比Fedora有更长的发布周期。
SUSE
SUSE ,SUSE Linux Enterprise Server (SLES),和openSUSE 之间的关系类似于Fedora、Fedora、RedHat Enterprise Linux和CentOS的关系,都是有一个公司研发制作的不同Linux发行版。
2. 安装CentOS 7操作系统
2.1 Linux安装和准备
如上文所言CentOS是一个免费而且多用于演示和试验的Linux发行版。所以我们选择安装CentOS 7作为我们学习的Linux系统。
安装之前需要有一下准备:
1.电脑(毫无疑问)
- 操作系统CentOS 7
2.2 手动安装CentOS
3.配置环境变量,实现执行history的时候可以看到执行命令的时间
history 命令的用法格式为:
history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
3.1 History 命令的HISTTIMEFORMAT变量
HISTTIMEFORMAT变量能够显示时间:
因此:
~]$ HISTTIMEFORMAT="%F %T "
我们将HISTTIMEFORMAT变量设置成以下格式
之后查询 history
命令查看是否更改成功
~]$ history 3 122 2020-02-04 22:44:24 HISTTIMEFORMAT="%F %T " 123 2020-02-04 22:44:26 history 124 2020-02-04 22:47:12 history 3
修改成功,下一题!
4.总结Linux哲学思想
4.1 一切皆文件
不仅是普通的文件,像目录、字符设备、块设备、套接字等在Unix与Linux中都是用文件的方式存储的,它们虽然类型不同,但是对其提供的却是同一套操作系统接口,使得所有资源的访问都是统一表现为文件形式。
4.2 提供多个小型且用途单一的程序
Linux中提供的程序和可执行文件一般功能单一,短小精悍,所以程序一般不太复杂,从而保证了linux可以高效的运行,Linux中常见的工具也就几百个。
4.3 用多个小的程序共同完成复杂任务
由于每个程序都是短小精悍的,所以在处理复杂的任务时,需要多个小程序来共同完成,系统可以通过连接多个简单的程序来处理复杂的功能,在保证简洁的同时,也完成了对复杂任务处理的需求。
4.4 使用字符界面,简介明了
对于计算机的访问,Linux通常给出的是字符型的界面,特点是简洁明了,消耗极小的资源,最重要的是开源,出现的任何问题都可以通过简洁的命令行实现排查排错,修改系统配置。
4.5 配置数据存储在文本中
Linux及各种应用的配置文件都存放在文本配置文件当中,无论是什么配置修改,都可以通过对其配置文件的修改来达。
5.总结Linux常用命令使用格式
COMMEND [OPTIONS] [ARGUMENTS...]
COMMAND:代表需要执行的命令
OPTIONS:选项,用来调整命令的执行特性
[] :中括号中的内容表示可以省略,一般命令都支持一个或多个选项
ARGUMENTS:参数,表示命令作用的对象,需要多个参数时,用空白字符分隔开
5.1 echo命令的使用格式
echo [SHORT-OPTION]... [STRING]...
-n do not output the trailing newline/不另起新行输出
-e enable interpretation of backslash escapes/启用反斜杠转义
-E disable interpretation of backslash escapes (default)/禁用反斜杠转义(默认)
--help display this help and exit/显示此帮助界面并退出
5.2 date命令的使用格式
date [OPTION]... [+FORMAT] 显示日期时间
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 设定日期
FORMAT 格式说明: | |
---|---|
%F | 日期,显示为数字,格式为:2020-03-02 |
%D | 显示英制时间,月日年,格式为:03/02/2020 |
%T | 时间,显示为数字,格式为:15:52:16 |
%Y | 年份,只显示完整的年份数字,格式为:2020 |
%y | 显示年份的后两位,显示格式为:20 |
%m | 月份,只显示数字,显示格式为:02 |
%d | 日期,只显示数字,显示格式为:04 |
%H | 小时,只显示数字,显示格式为:(00…23):21 |
%k | 小时,显示格式(0…23) |
%I | 12小时制,显示格式为:(00…12) |
%l | 12小时制,显示格式:(0…12) |
%h | 显示月份,显示格式为:2月 |
%M | 分钟,只显示数字 |
%S | 秒钟,只显示数字 |
%a | 缩写星期 |
%A | 完整星期 |
%b | 缩写月份 |
%B | 完整月份 |
%r | 显示格式:(11:11:11 PM) |
%R | 同%H%M (23:31) |
%s | 显示时间戳,从1970年1月1日至今的秒数 |
5.3 ifconfig命令的使用格式
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置
5.4 export命令的格式
export [-fnp][变量名]=[值]
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量