一,4大开源协议
   四大协议的相同点和不同点
  GPL,LGPL,BSD, Apache 四大协议中,GPL作为GNU通用公共许可证,只要在一个软件中使用GPL协议的产品,则该产品必须采用GPL协议,也必须开源和免费,具有所谓的“传染性”。

   GPL和LSPL都保障了原作者的知识产权,避免有人利用开源代码复制开发类似产品,都不适合以它为基础,做二次开发的商业软件;但LGPL作为GPL主要为类库使用的开源协议,它允许商业软件作为类库引用并发布销售。

   BSD作为企业公司首选协议,它要求使用的产品需要包含一份版权提示和免责声明以及禁止拿开发者的名义做市场推广;而Apache除了要求为源用户提供版权提示和免责声明,还要有原来代码的协议和专利许可声明;但两者都满足商业软件作为或商业软件发布销售,鼓励代码重用。

二,linux的哲学思想
   1.Linux有一个重要的哲学思想:

        一切皆文件:把几乎所有资源都抽象为文件形式:硬件、通信接口等等;
   2.由众多功能单一的程序组成
         功能单一:一个程序只做一件事,并且做好;
         复杂任务:组合小程序,完成复杂任务。
   3.尽量避免与用户交互,易于以编程的方式实现自动化任务;
   4.使用纯文本文件保持程序的配置信息;
                                           
三,linux文件系统和常见基本命令
    (1)文件系统的简述与文件的命名
     Linux文件系统是一种倒置树状结构,使用层级结构、索引进行分布式存储,
     文件的路径分为:绝对路径和相对路径两种,
     在文件命名上严格区分大小写,支持除/以外的任意字符命名,最长不能超过255个字符,同一路径 下,两个文件不能同名。

    (2)linux命令的格式及参数
        COMMAND:

        可执行文件: 
            二进制格式程序文件;有可能会调用库文件;
            脚本程序文件:需要由解释器解释运行; 

        可执行程序的格式:

            在windows下:exe,msi,dll(动态数据库);

            在Linux下:ELF,so ;
         $PATH环境变量:保存外部命令对应程序的起始路径,彼此间使用冒号分隔;
         查找方式:自左而右
         查找结果会缓存hash表中;
         hash:用于查看hash表;
         选项:调整命令的运行特性;
         形式分为两种:

            短选项:-l -d -h

            长选项:--long,

            --full-time;短选项可以合并,选项可以带参数即选项参数;
     命令参数:命令的作用对象,即命令对什么生效;
     有的命令可有多个参数,参数间使用空白字符分隔;        

    (3)常见基本命令和获取命令的使用帮助
     常用的命令行接口有bash,zsh,fish三种,最为通用的当属bash命令接口,适用于所有发行版,可以使用echo $SHELL查看当前shell的类型;Linux中,可以通过ssh协议用Xshell远程连接当前系统,通过 ss -tnl命令查看系统是否监听于tcp协议的22端口上,而后通过 ifconfig 或 ip addr list命令查看系统的IP地址远程连接,在此之前我们要确保系统防火墙处于关闭状态。我们可以通过 type查看命令类型,tty查看当前的终端设备,pwd用于显示工作目录,cd用于切换目录,cd ~username切换至指定用户的家目录

    获取命令的使用帮助:
    ①help 获取内部命令的使用帮助,
    ②--help用来获取外部命令的简要使用帮助。
     使用手册 man都存储在系统的 /usr/share/man位置下,
     man的章节分为
          1:用户命令;
          2:系统调用;
          3:C库调用;
          4:设备文件及特殊文件;
          5:文件格式;(配置文件格式)
          6:游戏使用帮助;
          7:杂项;
          8:管理工具及守护进行;
          9: 内核程序;
     whatis(man -f) 用来查看关键字在哪些章节下有手册,但并非每个关键字在man在所有章节下都有手册;

    makewhatis 用于执行查询数据库来手动更新数据库,

    man -k 基于关键字搜索相关的使用手册;

    man less获取使用帮助,

    man -M用于到指定路径下查找相关关键字手册并显示之;

     ③info 获取命令的在线文档;
     ④查看应用程序自带帮助文档;
     ⑤参考程序的主站上的文档;
     ⑥查看系统发行版主张文档;
     ⑦;通过搜索引擎查找;

 四,bash有三种特性:
     ①命令别名:可以用alias 获取当前用户下命令,
              alias NAME=’command‘定义别名,
              unalias NAME撤销别名;

     ②命令历史:HISTSIZE 和HISTFILESIZE总条数默认均为1000;
       当前用户的命令历史文件放在~/.bash_history中,
       history 用来执行命令历史的操作;可以通过HISTCONTROL环境变量取值改变历史的记录方式,
       HISTCONTROL=ignoredups用于忽略连续且相同的重复命令,

              ignorespace指将空白字符开头的命令不记入历史命令;

              ignoreboth表示两者同时生效;

     ③快捷键ctrl+a(调至行首),+e(行尾);k(删除光标所在处至尾部的内容),u(删除行首至光标所在处内容);
   which用于查找文件的完整路径,查找二进制文件,-a 显示所有匹配的程序文件,而非第一个,--skip-alias 表示略过别名;whereis 查找这个文件二进制,源代码,用户手册的位置,-b(等同于which),-m(只显示手册);who 显示目前登入系统的用户信息,-r(显示运行级别),-b(系统本次启动的时间);w表示谁登录了并且在干什么;whoami 显示自身的用户名称;可以通过poweroff,halt,shutdown -h,init 0关闭系统,reboot,init 6重启系统。