第二天上课 llinux发展史

                         linux发展史


unix诞生

   1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的项目;该项目要建立一套多使用者、多任务、多层次(multi-user、multi-task、multi-level)的MULTICS操作系统。直到1969年,因MULTICS项目的工作进度太慢,该项目就被停了下来。当时,Ken Thompson已经有一个称为"星际旅行"的程序在GE-635的机器上运行,但是反应非常的慢,正巧被他发现了一台被闲置的PDP-7(Digital的主机),Ken Thompson和Dennis Ritchie就将"星际旅行"的程序移植到PDP-7上。而这部PDP-7就此在整个计算机历史上留下了芳名

   1973年,Ken Thompson(肯·汤姆森)和Dennis Ritchie(丹尼斯·里奇)发明了C语言之后,着手将UNIX程序用高阶的C语言改写,这个时候已经是第4版了(C的前身叫B,也是他们两个人发明的,为了改写UNIX,他们将B语言做了一番改进,而成了C语言)。这个划时代的动作让UNIX能够很轻易地被移植到各种不同的机器上。 

unix为什么成功

  健壮性

  功能丰富

  移植性

  开放性

 

GNU

   GNU是自由软件之父Richard Stallman在1984年组织开发的一个完全基于自由软件的软件体系,与此相应的有一分通用公共许可证(General Public License,简称GPL)。Linux以及与他有关的大量软件是在GPL的推动下开发和发布的。

自由软件之父 – Richard Stallman 像一个神态庄严的传教士一样喋喋不休地到处传播自由软件的福音,阐述他创

立GNU的梦想:“自由的思想,而不是免费的午餐”。这位自由软件的“顶级神甫”为自己的梦想付出了大半生的努

力,他不但自己创作了许多自由软件,如:GCC、和GDB,在他的倡导下,目前人们熟悉的一些软件如BIND、P

erl、Apache、TCP/IP等都成了自由软件的经典之作。

如果说Richard Stallman创立并推动了自由软件的发展,那么,Linus Torvalds毫不犹豫奉献给GNU的Linux,则把

自由软件的发展带入到一个全新的境界。

 BSD

        386BSD因为法律问题直到1992年还不能发布,NetBSD和FreeBSD是386BSD的后裔,比Linux早。Linus Tor

valds说,当时如果有自由的基于386的Unix-like操作系统,他就可能不会创造Linux。尽管无法预料这给以后的软

件业究竟造成了什么样的影响(如果没有这个法律纠纷,很有可能没有今天的革命性的Linux),但有一点可以肯

定,Linux更加丰富了这块土壤。


Minix

      Minix是一种基于微内核架构的类Unix计算机操作系统,由Andrew S. Tanenbaum发明。Minix最初发布于1987

年,开放全部源代码给大学教学和研究工作。2000年重新改为BSD授权,成为自由和开放源码软件

因为AT&T的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将Unix源代码私有化,在大学中不再能

使用Unix源代码。教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前

提、下,自行开发与Unix兼容的操作系统,以避免版权上的争议。他以小型Unix(mini-Unix)之意,将它称为Minix。

Minix没有任何代码抄袭Unix,所以它们之间并没有任何继承关系,Minix作为当时有史以来的第一个开源的操作系

统放到网上以后,短期之内得到了飞速发展,大量的人进行下载学习。

由于Minix是教授一人所写,所以存在一些漏洞。这时候有使用者发现漏洞存在,想着去下载一些补丁或者自己写

一些补丁来修补这些漏洞,修补之后发现效果不错,然后就建议教授利用这些补丁完善下Minix,结果呢,教授比

较固执,意思是说:为了维持Minix的纯洁性,不需要任何外来代码。也就是说,根本不打算做商业发行,所以Mi

nux保持了其最原始的风范。

linux的由来

       Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰 

学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。

Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软

件、应用程序和网络协议,可支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定

的多用户网络操作系统。

Linux存在着许多不同的版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如:手

机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且

使用GNU工程各种工具和数据库的操作系统 

在后来的几年内,由于计算机硬件工业的强力运作,以Intel主导的x86系统架构的个人计算机大行其道,所以个人

计算机算是相当流行的一个机器了。但在此时,人们使用的大多还是DOS操作系统。此时,芬兰赫尔辛基大学有

个叫Linus Torvalds的学生做了件不寻常的事情。当时他正好有一台386的计算机,由于并不喜欢自己电脑上的DO

S系统,所以就想:既然Minix这么棒、这么稳定,那我何不将它移植到个人计算机 (好在由于Stallman提倡的Op

en Source理念,他得以接触到一些Source Code,而经由这样的一个想法,O(∩_∩)O~他就很有心的读取了Unix

核心,并且去除较为繁复的核心程序,将它改写成可以适用于一般个人计算机的x86系统上面)。

到了1991年,他终于将0.02版的原始码hobby放到网络上面供大家下载,由于hobby受到大家的肯定,相当多的朋

友一起投入这个工作中。终于在1994年,将第一个完整的核心Version 1.0释出,并且造成目前的大流行。。。由

于Linux kernel的发展是由虚拟团队所达成的,大家都是透过网络取得Linux的核心原始码,经由自己精心改造后再

回传给Linux社群,进而一步一步的发展完成完整的Linux系统,至于Linus Torvalds是这个集团中的发起者。由于

这个群策群力的缘故,Linus Torvalds将Linux定为同样造福大家的GNU授权模式!

Linux是Linus Torvalds受到Minix的影响而作成的。但在设计哲学上,Linux则和Minix大相迳庭。Minix在内核设计上

采用微内核的原则,但Linux则和原始的Unix相同都采用宏内核的概念。在Linux发展之初,双方还于1992年在新

闻组上有过一场精彩的理念争论。Minix的作者和支持者认为Linux的单内核构造是“向七十年代的大倒退”,而Linux

的支持者认为Minix本身没有实用性


linux的发行版 

Redhat : Redhat,应称为Redhat系列,包括RHEL(Redhat Enterprise Linux,为收费版本)、Fedora Core(由Redhat桌面版本发展而来,免费)、CentOS(RHEL的社区克隆版本,免费)。Redhat可以说是在国内使用最多的Linux版本,甚至有人将Redhat等同于Linux。这个版本的特点就是使用人数多,资源多,而且网上的许多Linux教程也都以Redhat为例进行讲解。

 Debian:  或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,也最遵循GNU规范。Debian分为三个分支: stable, testing和unstable。

Ubuntu: 严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以说Ubuntu是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

Gentoo:  Gentoo是Linux最年轻的发行版本,因此也吸取之前的发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的开发者之一)创建,由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本

 FreeBSD : FreeBSD并不是一个Linux系统,但FreeBSD与Linux支持的硬件环境比较一致,采用的软件也比较类似,用户也有许多重合。所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。其中,stable是稳定版,而current则是添加了新技术的测试版。

 CentOS:虽然社区企业操作系统(Community ENTerprise Operating System)是Linux服务器最有名最常用的发行版,但是它的桌面版本还在继续不断完善中。

Elementary OS:其开发人员标榜Elementary OS是“Windows和OS X快速又开放的替代品”,这款漂亮精致基于Ubuntu LTS的桌面Linux发行版,第一版发行于2011年,目前发行的是第三个稳定版本(代号“Freya”)

openSUSE :既 可作为一个滚动发布,又可当作是一个独立的定期发布版本,openSUSE根据其开发人员的不同,是系统管理员、开发人员和桌面用户Linux发行版的选 择,无论你的经验水平处于哪种级别(受到初学者和极客们的一致好评)。最重要的是,著名又屡获殊荣的SUSE Linux Enterprise产品基于openSUSE

Linux Mint :Linux Mint的著名口号(“From freedom came elegance”),不只是说说而已。基于Ubuntu的Linux Mint,是一个稳定、功能强大、完整、易于使用的Linux发行版——我们还有很多很多的褒义词可以用来形容Mint

linux的哲学思

1、一切皆文件

2、单一目的的小程序

3、组合小程序完成复杂任务

4、文本文件保存配置信息

5、尽量避免跟用户交互

虚拟化

    在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

命令适用

  ls用法:ls [选项]… [文件]…

          -L, --dereference         当显示符号链接的文件信息时,显示符号链接所指示

         -a, –all           不隐藏任何以. 开始的项目

   cd 目录切换命令
  pwd 显示当前目录

  -L, --logical
         显示当前目录
  -P, --physical
         显示当前目录的实际物理地址
  --help  帮助
  --version  版本    
  mv [选项]... [-T] 源文件 目标文件  
      --backup[=CONTROL]       为每个已存在的目标文件创建备份
 -b                           类似--backup 但不接受参数
 -f, --force                  覆盖前不询问
 -i, --interactive            覆盖前询问
 -n, --no-clobber             不覆盖已存在文件
如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
     --strip-trailing-slashes  去掉每个源文件参数尾部的斜线
 -S, --suffix=SUFFIX           替换常用的备份文件后缀
 -t, --target-directory=DIRECTORY      将所有参数指定的源文件或目录
                                       移动至 指定目录
 -T, --no-target-directory     将目标文件视作普通文件处理
 -u, --update                  只在源文件文件比目标文件新,或目标文件
                               不存在时才进行移动
 -v, --verbose         详细显示进行的步骤
     --help            显示此帮助信息并退出
     --version         显示版本信息并退出
  cp 用法:cp [选项]... [-T] 源文件 目标文件
     长选项必须使用的参数对于短选项时也是必需使用的。
 -a, --archive 等于-dR --preserve=all
     --backup[=CONTROL 为每个已存在的目标文件创建备份
 -b 类似--backup 但不接受参数
     --copy-contents 在递归处理是复制特殊文件内容
 -d 等于--no-dereference --preserve=links
 -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
 -i, --interactive 覆盖前询问(使前面的 -n 选项失效)
 -H 跟随源文件中的命令行符号链接
 -l, --link 链接文件而不复制
 -L, --dereference 总是跟随符号链接
 -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
 -P, --no-dereference 不跟随源文件中的符号链接
 -p 等于--preserve=模式,所有权,时间戳
     --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
 -c                           same as --preserve=context
     --sno-preserve=属性列表 不保留指定的文件属性
     --parents 复制前在目标目录创建来源文件路径中的所有目录
 -R, -r, --recursive 递归复制目录及其子目录内的所有内容
     --reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
     --remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
     --sparse=WHEN 控制创建稀疏文件的方式
     --strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
 -s, --symbolic-link 只创建符号链接而不复制文件
 -S, --suffix=后缀 自行指定备份文件的后缀
 -t,  --target-directory=目录 将所有参数指定的源文件/目录
                                          复制至目标目录
 -T, --no-target-directory 将目标目录视作普通文件
 -u, --update                 copy only when the SOURCE file is newer
                                than the destination file or when the
                                destination file is missing
 -v, --verbose                explain what is being done
 -x, --one-file-system        stay on this file system
 -Z, --context=CONTEXT        set security context of copy to CONTEXT
     --help 显示此帮助信息并退出
     --version 显示版本信息并退出
   wget  用法: wget [选项]... [URL]...
    下载:
 -t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)。
      --retry-connrefused       即使拒绝连接也是重试。
 -O,  --output-document=FILE    将文档写入 FILE。
 -nc, --no-clobber              skip downloads that would download to
                                existing files (overwriting them).
 -c,  --continue                断点续传下载文件。
      --progress=TYPE           选择进度条类型。
 -N,  --timestamping            只获取比本地文件新的文件。
   yum whatprovides  查看命令的工具包名称
  yum install telnet tree htop  安装
  systemctl restart NetworkManager.service  重启网卡服务  
  dhclient 命令使用动态主机配置协议动态的配置网络接口的网络参数
  vi
文字编辑器
      h :光标左移一个字符
      l :光标右移一个字符
      space:光标右移一个字符
      Backspace:光标左移一个字符
      k或Ctrl+p:光标上移一行
      j或Ctrl+n :光标下移一行
      Enter :光标下移一行
      w或W :光标右移一个字至字首
      b或B :光标左移一个字至字首
      e或E :光标右移一个字至字尾
      ) :光标移至句尾
     ( :光标移至句首
     }:光标移至段落开头
    {:光标移至段落结尾
    nG:光标移至第n行首
    n+:光标下移n行
    n-:光标上移n行
    n$:光标移至第n行尾
    H :光标移至屏幕顶行
    M :光标移至屏幕中间行
    L :光标移至屏幕最后行
    0:(注意是数字零)光标移至当前行首
    $:光标移至当前行尾
  su :   用法 su-用户名  【切换用户】
   usradd :用法 useradd - 【帐 号 建 立 或 更 新 新 使 用 者 的 资 讯】
  basename:(获取基名)用法:basename 名称 [后缀] 或:basename 选项
   去掉前导的目录部分后打印“名称”。
如果指定的话,还会去掉尾随的“后缀”。
     --help     显示此帮助信息并退出
     --version  输出版本信息并退出
   mkdir: 用法:mkdir [选项]... 目录...
       -m, --mode=模式       设置权限模式(类似chmod),而不是rwxrwxrwx 减umask
       -p, --parents         需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
       -v, --verbose         每次创建新目录都显示信息
       -Z, --context=CTX     将每个创建的目录的SELinux 安全环境设置为CTX
       --help            显示此帮助信息并退出
       --version         显示版本信息并退出
   uname:(查看内核版本号)
-a(显示所有信息)
-r(只显示内核版本号)
     who: 用法:who [选项]... [ 文件 | 参数1 参数2 ]
         -a, --all             等于-b -d --login -p -r -t -T -u 选项的组合
         -b, --boot            上次系统启动时间
         -d, --dead            显示已死的进程
         -H, --heading 输出头部的标题列
         --ips         print ips instead of hostnames. with --lookup,
                   canonicalizes based on stored IP, if available,
                   rather than stored hostname
              -l,--login           显示系统登录进程
            --lookup          尝试通过 DNS 规范化主机名
             -m                    只针对和标准输入有直接交互的主机和用户
             -p, --process 显示由 init 进程衍生的活动进程
              -q, --count           列出所有已登录用户的登录名与用户数量
            -r, --runlevel        显示当前的运行级别
            -s, --short           只显示名称、线路和时间(默认)
            -T, -w, --mesg        用+,- 或 ? 标注用户消息状态
            -u, --users           列出已登录的用户
          --message 等于-T
          --writable        等于-T
          --help            显示此帮助信息并退出
         --version         显示版本信息并退出

     whoami:   用法 whoani【选项】    

           --help     显示此帮助信息并退出
      --version  输出版本信息并退出

     tty  :    用法 tty【选项】

           -s, --silent, --quiet 什么也不显示,只返回退出状态值
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

  

原创文章,作者:mxl,如若转载,请注明出处:http://www.178linux.com/51691