Linux最初来源于unix,Unics在1969由Bell实验室有一名叫:Ken Thompson 的人因为玩游戏,找到一个PDP-7老旧的电脑用汇编语言编写了Unics后改名为Unix,
在这往后时间中,1972年,ken Thompson和他的同事,重新用c语言把UNix编码,以后unix迎来了他的春天。
到达1991年有个叫Linus Torvalds 研发了linux内核,并把它加入GPL开源协议,,由全世界黑客们自发的组织一起开发Linux,短短几个月Linux正式公布了正式版。
终端分为:物理终端.逻辑终端,伪终端,图形终端
物理终端:系统启动过程
虚拟终端:系统登录后界面有6个 ctrl+alt+【f1-f6】来回切换
图形终端:在那个虚拟终端启动,即位于那个虚拟终端
串行终端:tty6
伪终端:pty
tty:查看当前的终端设备:
ifconfig或ip addr list: 查看活动接口的ip地址
ping:探测网络上的目录主机与当前主机之间的连通性
ctrl+c: 终止命令执行
linux的哲学思想:
1、一切皆文件:
把几乎所有资源统统抽象为文字形式:包括硬件设备,甚至通信接口等:
2.由众多功能单一的程序组成
3.尽量避免跟用户交互
4.使用文本文件保存配置信息
开源协定:
GPL,LGPl,BSD,Apache,mit
BSD:
1、如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定
2、如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定
3、不可以用开源程序代码的作者或组织,以及原来的产品的名字做市场推广
GNU GPL
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
可自由复制
你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
可自由分发
在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
可以用来盈利
你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
可自由修改
如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
GNU LGPL
GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。
MIT
MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:
该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。
这意味着:
你可以自由使用,复制,修改,可以用于自己的项目。
可以免费分发或用来盈利。
唯一的限制是必须包含许可声明。
MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
Apache
Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合(这里有 一篇文章阐述这个问题)。
Apache 协议还有以下需要说明的地方:
永久权利
一旦被授权,永久拥有。
全球范围的权利
在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
授权免费,且无版税
前期,后期均无任何费用。
授权无排他性
任何人都可以获得授权
授权不可撤消
一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。
分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。
linux分为:相对路径,绝对路径
相对路径:从当前目录起
绝对路径:从/根目录说起
linux 基础命令
查看命令类型:
type COMMAND
linux文件系统:
1、文件名名称严格区分字符大小写:
2、文件可以使用除/以外任意字符
3、文件名长度不能超过255字符
4、以.开头的文件为隐藏文件
.:当前文件
..:当前目录的上一级目录
/etc/sysconfig
.:sysconfig
..:/etc
pwd:显示当前目录
cd:change directory
cd [/PATH/TO/SOMEDIR]
cd:切换回家目录
注意:bash中,~代表家目录
cd ~:切换回自己的家目录
cd ~USERNAME: 切换至指定家目录
cd -:于当前目录于上一次所在目录进行切换
相关的环境变量
$PWD:当前工作目录
$OLDPWD:上一次的工作目录
ls:list, 列出指定目录下的内容
-a:显示所有文件,包括隐藏文件
-A:除了.,..以外的都显示
-l:--long,长格式列表,即显示文件的详细属性信息:
-h:对文件大小单位换算:换算后结果可能会非常精确
-d:查看目录自身而非起内部的文件列表
-r:reverse,逆序显示
-R:递归显示子目录
cat:文本查看工具
-n:给显示的文本行编号
-E:显示行结束符$
tac:和上面除了逆序显示,其他都一样
file:查看文件内容类型
例子:file /etc/inittab
echo :回显
选项:-n:不进行换行
-e:让转义符生效
\n:换行
\t:种表符
\b:退格
‘:强引用
“:弱引用
关机或重启命令:shutdown
shutdown [OPTIONS...] [TIME] [WALL...]
shutdown -r now :现在重启
shutdown -r +10 : 十分钟后重启
shutdown -h now : 现在关机
shutdown -h +30 : 30分钟后关机
shutdown -c :取消 shutdown设置
shutdown -K :只发警告信息
日期相关的命令:
date:用来显示或设置系统日期时间
hwclock,clock:都表示硬件时钟
-s:以硬件为准,把系统调整为于硬件时间相同
-w:以系统为准,把硬件时间调整为于系统时钟相同
cal:日历
cal 2015 :显示整个2015月份
cal 2015 10:显示2015年10月