linux学习之开篇基础学习
一、之前在学校的时候就接触并学习了一段时间的linux,学习是散乱的,而且学习过程漫长的,在没有集中练习的情况下很多时候学习的知识不能有效的组织在一起,不能形成很好的只是体系。此处从头开始学习,希望在接下来的四个月通过努力能将松散的知识点组织成一个完整的体系。当然最重要的是即将毕业,为了能找到个高水平的工作。以后将持续更新此博客,希望能看到的朋友对总结的知识提出宝贵的意见。
众所周知,无论在哪里学习,学习linux总是从它的历史学起,了解linux的历史有助于真正了解linux开源的意义。在这里只谈几个重要的相关概念,有时候面试会提到的。
什么是GUN?什么事GPL?以及现在的几种开源协议?(对于这些不必要论述特别清楚,只要能达到简述并分清楚其概念即可)。
GUN----早期的unix发展之后,由于一些原因,richard(史托曼)提出了一个口号,叫做GUN(GUN is not unix),目的是创建一个自由开放的unix操作系统,因此成立了自由软件基金组织FSF(全称Free Software Foundation ),以方便更多的人加入到自由软件组织中。而GUN就作为一个自由软件项目成立。
GPL----1985年,为了避免GUN项目所开发的软件被其他人利用称为专利软件,因此编写了GPL协议(全称general public license)叫做GUN通用公共许可证。GUN开发的重要软件有Emacs、gcc、GUN c library、bash shell,更多FSF项目开发的软件参考http://www.fsf.org。遵循GPL协议的软件可供使用者免费下载、使用、修改、发布。但是修改发布的软件也必须遵循GPL协议。GPLv2是早期的通用许可协议,后来出现了库通用许可证,简称LGPL(library general public license)是对GPLv2协议的补充,之后被重命名为GUN宽通用公共许可证(lesser general public license)、GPLv3是在2005年开始起草的新版本的通用许可证协议,较之前的版本做了相应的修改。在所有的改动中,最重要的四个:解决软件专利问题、与其他许可证的兼容性;源代码分割和组成的定义;解决数字版权管理 (数字限制管理) 问题。
apache:apache软件基金会asf(apache software foundation)是一个专门支持开源软件项目而办的非盈利组织。其项目和子项
目都遵循apache许可证。
BSD:BSD开源协议(Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统。
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当
你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
1、如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2、如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3、不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件
发布和销 售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,
在必要的时候可以修改或者二次开发。更多信息参考中国开源社区http://www.oschina.net
二、接下来介绍主流的几个linux发行版本。目前主流的三大linux发行版1、slacware 2、debian 3、redhat
本人学习过程中使用的redhat和centos,所以只阐述redhat、centos和linux的三者之间的关系。redhat作为linux的三大发行版本之一,由
redhat公司提供,可供使用者个人、或商用免费下载使用,但是redhat提供的服务采取收费机制,因此一些功能或许个人学习使用的话会造成
某些不方便,在公司的话可以使用。rhel就是redhat的商用版本。而centos是一个完全免费版的redhat,其相关组件功能完全自由免费,和
redhat完全兼容。可供学习者使用。具体redhat和centos之间的亲密关系可自行网上查找。另外需要提到的fedora是linux下的一个桌面型系统。
获取redhat或centos可以从其官网直接下载相应的版本,也可以从以下的站点选择下载:
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
简单说下linux的哲学思想:
1、一切皆文件;
把几乎所有资源,包括硬件设备都组织为文件格式;
2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;
组合小程序完成复杂任务;
3、尽量避免跟用户交互;
目标:实现脚本编程,以自动完成某些功能;
4、使用纯文本文件保存配置信息;
目标:一款使用的文本编程器即能完成系统配置工作;
三、正式开始学习linux。
linux的交互式接口分为两种方式:
一种是图型用户界面,简称GUI(Graphical user interface)。类似于大家熟悉的windows桌面系统。
linux的桌面系统有 GNOME:(C语言开发,使用gtk库) 、 KDE:(C++艳艳开发,qt库) 、XFCE:(轻量级桌面)
另一种是命令行界面CLI(commond line interface),是基于命令的终端,类似windows下的cmd打开的界面。
还要明白的一个终端的区别:linux下的终端分为以下几种:
物理终端:直接接入本机的显示器和键盘设备;/dev/console
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6默认启动6个虚拟终端,使用Ctrl+Alt+F#: [1,6]
图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境;设备文件路径:/dev/tty#
模拟终端:图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面设备文件:/dev/pts/# [0,+oo)
查看当前的终端设备命令:tty
通常情况下都是使用的linux命令行界面,不得不提到的就是命令提示符,$PS1表示一级命令提示符,$PS2表示二级提示符。
使用echo $PS1 和echo $PS2 可显示。