Linux操作系统介绍
Linux操作系统介绍
0.前言
其实我用Linux使用的比较少,可以说除了老师作业基本不怎么玩Linux系统,但是在面试某个的面试官问我Linux系统的东西时间,我懵逼了,所以我觉得有必要学习Linux的相关知识和体系
1.操作系统简史
1946年2月,美国宾夕法尼亚大学诞生了第一台电子计算机,这款计算机由大量的电子管构成,体型十分的庞大。在最开始的计算机最后并没有操作系统的概念,计算机采用手工操作,程序员将对应程序和数据的打孔纸带装入输入机器当中,然后启动输入机器将程序和数据输入计算机内存最后控制运行计算结果,完成后要取下纸带才能让下一个用户使用。
这种方式的缺点很明显,用户独占全机,系统资源的利用效率十分低下,计算机只能单用户单任务的执行操作,中途也无法暂停。为了解决这种问题,操作系统的概念由此出现,从批处理系统、多道程序系统、分时系统到最后的实时系统不断根据时代的需求向前发展
2.Linux的诞生与分支
在计算机的硬件发展中,随着使用的人数增加带来了巨大的利益,发明UNIX的AT&T收回了相应的版权,大家无法免费使用Unix,大学也不能将Unix源码作为教材教导学生,新的开源免费操作系统迫在眉睫。
首先是Andrew S. Tanenbaum在Unix源码不开源的条件下,写出了另一个的操作系统Minix(mini—Unix),最后由Linus Torvalds研究Minix并在此基础上开发,最终写出了玩具版的操作系统Linux,自此以后,世界上第一款Linux操作系统诞生了。由于其开源和免费的理念,吸引了许多的电脑高手投入到了开发、改善、发展的Linux历史之中,最终演变成如今强大的Linux系统。
Linux系统发行版流派众多。目前有Red Hat、Debian、Suse、Ubuntu等发行版本,它们都使用Linux内核,都是Linux系统,却有各自的特点。总体来说,Linux的发行版本大体分可为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本。前者以Redhat(RHEL)为代表,后者以Debian为代表。
3.Linux内核和发行版
Linux的内核和发行版并不是一个概念:
- Linux内核:Linux内核是Linus领导的开发小组负责维护,版本唯一,提供硬件抽象层、硬盘、文件系统控制以及多任务功能的系统核心程序。作为系统的心脏,运行程序和管理像磁盘和打印机等硬件设备的核心程序
- Linux发行版:Linux发行版就是由Linux内核与工作常用软件的集合产品。不同标准将Linux发行版进行了不同性质的分类,比如根据社区维护还是商业公司维护,Linux发行版本分为了三个分支===》Redhat家族、Debian家族以及ShackWare家族
总的来说,Linux核心只有内核部分,安装好内核后,是没有所谓的用户界面和软件的,内核可以作为是Linux最基层的代码,而Linux发行版,是在内核的基础上,加入用户界面,软件支持,以内核为基础,开发不同应用的程序,组成完整的操作系统。
4.Linux系统结构
Linux系统的内部结构一般而言主要分为四个部分:内核、shell、文件系统和应用程序。前三者构成了基本的操作系统结构,使得用户能够运行程序、管理文件和使用系统。
内核:
操作系统核心,负责管理系统的进程、内存、设备驱动程序等等,决定着系统的性能和稳定性
shell:
shell是系统的用户界面,提供了用户与内核进行交互的一种接口,它接收用户输入端命令并把它送入内核去执行,是一种命令解释器。由于shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有相同的效果
文件系统:
文件系统就是文件存放在磁盘等存储设备上的组织方法
应用程序
标准的Linux系统一般都有一套称为应用程序的程序集合,包括了文本编辑器、编程语言、X Window、办公套件、数据库等
5.Linux帮助命令
Linux下常用的帮助命令有man和help,当需要查询一些命令或函数的具体使用方法时,就可以使用man,主要输入命令man后输入想要获取的命令别称,man就会列出一份完整的锁门,其中内容包括命令语法、各选项的意义以及相关命令等等
- man命令选项说明表
| 选项 | 说明 |
|---|---|
| -f | 只显示出命令的功能而不显示其中详细的说明文件 |
| -w | 不显示手册页,只显示将被格式化和显示的文件所在位置 |
| -a | 显示所有的手册页,而不是只显示第一个 |
| -E | 在每行的末尾显示$符号 |
help命令用于查看所有shell命令,用户可以通过该命令寻求shell命令的用法,只需在所查找的命令后输入help命令,就能查命令的内容了
6.Linux常用快捷键和脚本命令
(图片来源:https://www.cnblogs.com/youngchaolin/p/10962049.html)
7.Linux别名配置
在Linux系统中有一个叫作alias的命令,它可以给一些命令设置别名。
1 | |
这里需要注意的是等号前后不能有空格,并且如果vakue中有空格或者tab,则value需要使用引号括起来
1 | |
(http://c.biancheng.net/linux/alias.html)
8.Linux通配符
Linux通配符是由shell解析,一般用于匹配问津名,实际上是shell解释器去解析的特殊符号,Linux系统通常的通配符主要有:
- *:匹配任意多个字符
- ?:匹配任意一个字符
- […]:匹配中括号内出现的任意一个字符
- [!…]:不匹配中括号内出现的任意一个字符
9.Linux环境变量
在Linux系统中,环境变量是用来定义系统运行环境的一些参数,比如每个月用户不同的家的目录、邮件存放地址等。Linux的环境变量一般都是大写,算是约定俗成的规范。我们可以使用env来查看Linux系统中的所有环境变量:
Linux需要数百个环境变量来协同工作提供服务,又因为给每个用户提供独立的工作运行环境,一个相同的环境变量会因为用户身份的不同而具有不同的值。具体操作百度即可,我是觉得除特殊情况外,没必要记得清清楚楚。
10.Linux文件描述符和重定向
所谓的文件描述符设置与文件输入、输出相关的证书,在编写脚本时会经常使用标准的文件描述符来讲内容重定向输出,其中0、1、2是文件描述符(分别对应stdin、stdout、stderr),< 、>, >>叫做操作符:
stdin(0):
标准输入,这个概念有点不太容易理解比如:1.使用<从文件中读取内容,2.当前命令将内容通过管道传输给下一个命令而下一个命令,而实际内容是传输给了stdin所以下一个命令也是从stdin中读取内容
stdout(1):
标准输出,这是默认选项。使用方法:1>等价于> 或者 1>>等价于>>,;如果想使用其它文件描述符,必须将文件描述符放在操作符之前
stderr(2):
标准错误,使用方法2>或者2>>,标准错误可以将错误信息插入到文件而不在终端显示 。
<:
从文件中读取内容
>:
将内容插入到文件,每次插入前都会清空文件内容
>>:
将内容插入到文件, 将内容追加到现有文件的末尾