目录
前言
LInux和Unix并不是同一个操作系统,但是两者的操作方式很类似,二者学其一,两者的操作系统基本就能融会贯通,所以Liunx又被称为类Unix,但是尽管操作的方式或者命令是同一个,但是底层的原理是不一样的,在此,本文并不会深入详解底层原理,只是帮助学会使用LInux这个操作系统,如果想要深入了解或者学习,请另寻他文学习。
一、发展史?
UNIX ,是一个强大多户、多任务操作系统,支持多种处理器架构,属于分时操作系统,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发。最初Unix是由汇编和机器语言编写,并在开发过程中,产生了B语言,C语言正是在此基础上改良而来。于是,Ken Thompson 与Dennis Ritchie成功地用C语言重写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。
(1)分裂
1978年,柏克利大学 (UCBerkeley),推出了 BSD系列,一些改进和新功能而成的 Unix。同时期,AT&T成立USG(Unix Support Group),将 Unix变成商业化的产品。至此,Unix就分为System IV和4.x BSD这两大主流,并且Unix的发展开始走向闭源的道路。除此之外,同时其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统。
(2)纠纷
Berkeley Software Design,Inc(BSDI)很快就与AT&T的UNIX Systems Laboratories(USL)附属公司产生了法律纠纷,USL是AT&T注册的公司。1992年,USL正式对BSDI提起诉讼,说BSD剽窃他的源码。而最终了结了好评如潮的BSD系统。由于最后判决悬而未决,这桩法律诉讼将BSD后裔的开发,特别是自由软件,延迟了两年,这导致没有法律问题的Linux内核获得了极大的支持。
(3)Linux兴起
由于Unix的版权曾经为AT&T所有,之后Novell拥有了Unix,再之后Novell又将版权出售给了SCO(这一事实双方尚存在争议),在版权问题上存在很大问题, 导致其受到一些限制并且不利于发展。让当时许多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑,此时,Richard Stallman出现了,他认为Unix是一个相当好的操作系统,倡导“Open Source的”。有意思的地方在于Richard Stallman既不是、也从来没有成为一个Unix程序员,但在当时的环境下,实现一个类Unix操作系统成了他明确的目标。Richard Stallman在1984年创业了GNU(来自GNU's Not Unix!的递归缩写),计划开发一套与Unix相互兼容的的软件。1985 年 Richard Stallman 又创立了自由软件基金会(Free Software Foundation)来为 GNU 计划提供技术、法律以及财政支持。随着十几年的发展,GNU 已经成为一个重要的影响力量,并且创造了无数的重要的工具。例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。也是从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件,这使得Unix社区生机勃勃,一派繁荣景象。自90年代发起这个计划以来,GNU 开始大量的产生或收集各种系统所必备的组件,像是——函数库(libraries)、编译器(compilers)、调试工具(debugs)、文本编辑器(text editors)、网站服务器(web server),以及一个Unix的使用者接口(Unix shell)等等。但是GNU一直没有开发操作系统的内核(kernel)。正在此时Linux出现了。正是因为Unix的不开源路线促成了Linux的诞生,Linus Torvalids 在1991年使用Minix创造了Linux ,其内核和GNU套件整合后形成了如今各式各样的Linux版本。所以,现如今Linux操作系统,其实是 Linux系统内核+GNU系统套件 = 各种版本的Linux操作系统(Linux的kernel + LInux的外壳(GNU套件)构成Linux系统),所以LInux并不是具体指某一款操作系统,可以视为是这些Linux操作系统的统称。
(4)Unix和Linux介绍
Unix系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上。
Unix大多是商业软件是闭源的(不过solaris,*bsd等unix都是开源的),而Linux是自由软件,免费、公开源代码。
Linux与Unix很相似,是一种类Unix系统,但两者之间没有没有代码逻辑上关系(源代码没一点关系),Linux是模仿Unix的系统结构、功能,独立开发出来的一种兼容Unix的系统。
二、Linux系统
一个Linux操作系统,由内核、Shell、文件系统三个重要的部分组成。
1. Kernel
内核:管理硬件设备、内存、进程、交互空间、文件系统、系统程序等。
2. Shell
Shell是用户和kernel之间的接口,它也是一个命令解释器,当用户在linux界面发出一个指令时,命令先传到shell,然后在将这个指令翻译成计算机可以识别的二进制语言,然后传给计算机内核,告诉内核要做什么事情,之后计算机内核将结果返还给shell,shell翻译成人所熟悉的语言,将结果展示。
查看系统默认使用的shell的种类命令:echo $SHELL
3. 文件结构
目录 | 作用 |
/ | 根目录,所有目录的父目录,Linux只有一个根目录,可以跟对比windows的盘符 |
/bin | 包含普通用户和系统管理员可以共享的各种通用程序,可执行文件、二进制文件 |
/boot | 包含系统引导程序GRUB及其配置文件、Linux内核文件vmlinuz和磁盘内存映像文件initrd.img等重要引导文件 |
/dev | 包含系统支持的所有设备文件 |
/etc | 包含系统管理和维护方面的所有配置文件 |
/home | 包含所有普通用户的家目录,普通用户的目录都在该目录下 |
/lost+found | 用于存储fsck命令在检测与修复文件系统时删除的文件和目录 |
/media | 包含移动存储介质的挂载点 |
/mnt | 包含所有自定义的文件系统的挂载点,可以挂载任何文件系统,常用来存放共享文件 |
/opt | 应用程序等附加软件(第三方软件,也就是除官方系统附带之外加装的软件)的安装目录 |
/proc | 虚拟文件目录,系统关闭时为空目录,系统运行时进程文件系统根目录,其中的部分文件系统分别对应当前正在运行的进程,可用于访问当前进程的地址空间 |
/root | 超级用户root的家目录 |
/sbin | 超级用户管理员的常用工具、如管理和维护、系统引导和恢复命令集合 |
/srv | 分担了var目录的一些功能,保存了一些网络服务所需的数据文件 |
/sys | 和proc一样是虚拟目录,系统各种设备配置信息的根目录 |
/tmp | 临时文件目录,用于存储系统运行过程生成的临时文件 |
/usr | 既可以作为根目录下的一个子目录,其中保存系统提供的各种共享数据(用户命令、库函数、头文件、文档 等),又可以作为一个单独的文件系统,可以认为是对根目录的一个递归目录,使得文件系统具有更大的灵活性 |
/var | 该目录和usr 类似,首先是根目录下的子目录,也可以作为单独的文件系统,用于存储各种可变长的数据文件(如日志文件)、暂存文件或待处理的临时文件 |
注:该目录结构是Linux每个系统都遵守的结构,每个目录都相应的功能,并且都有一定的权限限制。在实际运用中,我们应该尽可能的遵守该相应的约束,但是在实际的使用中,为了方便起见,可能并不遵守,但是这并不影响系统的实际性能。
本人也是最近学习Linux,顺便学学记录些学习路径,有什么不足之处,希望谅解并能指出,以便于我能及时改正。愿与君同进步!