Linux基础概念

1.大教堂与集市:

代表了两种不同的开发模式:绝大多数商业公司所采用的是大教堂模式,而Linux世界所采用的是集市模式。

2.OS的接口有两类:

GUI:Graphic User Interface
    GNome:c, gtk
    KDE: c++, qt
CLI:Command Line Interface
    bash
    zsh
    sh
    csh
    tcsh
    ksh

3.API和ABI

API:顾名思义,是编程的接口,换句话说也就是你编写“应用程序”时候调用的函数之类的东西。对于内核来说,它的“应用程序”有两种:一种是在它之上的,用户空间的真正的应用程序,内核给它们提供的是系统调用这种接口,比如 read(2),write(2);另一种就是内核模块了,它们和内核处于同一层,内核给它们提供的是导出的内核函数,比如 kmalloc(),printk()。这些接口都是你可以在编写程序的时候直接看到的,可以直接拿来用的。

ABI:应用程序二进制接口(ABI-Application Binary Interface)定义了一组在PowerPC系统软件上编译应用程序所需要遵循的一套规则。主要包括基本数据类型,通用寄存器的使用,参数的传递规则,以及堆栈的使用等等。ABI 是另一种形式的接口,二进制接口。除非你直接使用汇编语言,这种接口一般是不能直接拿来用的。比如,内核系统调用用哪些寄存器或者干脆用堆栈来传递参数,返回值又是通过哪个寄存器传递回去,内核里面定义的某个结构体的某个字段偏移是多少等等,这些都是二进制层面上的接口。这些接口是直接给编译好的二进制用的。换句话说,如果 ABI 保持稳定的话,你在之前版本上编译好的二进制应用程序、内核模块,完全可以无须重新编译直接在新版本上运行。

4.常见开源协定

BSD协议:BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
Apache Licence 2.0(Apache-2.0):介绍略
GPL:GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。
LGPL:略
MIT:略
MPL (Mozilla Public License 1.1):略
EPL (Eclipse Public License 1.0):EPL允许Recipients任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。 
20180328173536914.png

5.镜像站点

http://mirrors.aliyun.com
http://mirrors.163.com
http://mirrors.sohu.com

6.LINUX的终端

物理终端,控制台:console
虚拟终端:6个,tty
    Ctrl+Alt+F[1-6]
图形终端:
    CentOS 6:
        Ctrl+Alt+F7
    CentOS 7:
        在哪个虚拟终端启动,即位于哪个虚拟终端;
串行终端:ttyS
伪终端:pty
硬件设备也通过文件表示;
    物理终端:/dev/console
    虚拟终端:/dev/tty# [1,6]
    串行终端:/dev/ttyS#
    伪终端:/dev/pts/#
    注意:在启动设备之后,在其上关联一个用户接口程序,即可实现与用户交互;
    查看终端设备:
        ~]# tty
    查看接口程序:
        ~]# echo $SHELL
    启动GUI:
        在某一虚拟终端接口运行命令:startx

7.LINUX哲学思想

    1、一切皆文件:
        把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;
            open(), read(), write(), close(), delete(), create()
    2、  由众多功能单一的程序组成;一个程序只做一件事,并且做好;
        组合小程序完成复杂任务;
    3、尽量避免跟用户交互;
        目标:易于以编程的方式实现自动化任务;
    4、使用文本文件保存配置信息;

8.文件系统

        文件系统像一个倒置树状结构;
            /: 原初起点;

            /dev/pts/2:
                最左侧/: 表示根目录
                其它的/: 表示路径分隔符
                    Linux的路径分隔符是/
                    Windows的是\

        文件的路径表示:
            绝对路径:从根开始表示出的路径 
            相对路径:从当前位置开始表示出的路径

        文件名使用法则:
            严格区分字符大小写:file1, File1, FILE1
            目录也是文件,在同一路径下,两个文件不能同名;
            支持使用除/以外的任意字符;
            最长不能超过255个字符;

        用户有家目录:home,
            用户的起始目录;普通用户管理文件的位置;
        工作目录:
            当前所在的目录,如果命令没有额外指定路径,则默认为当前工作目录

            /etc/sysconfig/network-scripts/ifcfg-eno16777736
                basename:最右侧的文件或目录名;
                dirname:basename左侧的路径;
            命令:
                ~]# basename /PATH/TO/SOMEFILE
                    SOMEFILE
                ~]# dirname /PATH/TO/SOMEFILE
                    /PATH/TO

8.COMMAND

命令的语法通用格式:
# COMMAND OPTIONS ARGUMENTS

COMMAND: 
    发起一命令:请求内核将某个二进制程序运行为一个进程;
        程序 --> 进程
        静态 --> 动态(有生命周期)

    命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
        多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
            普通命令:/bin, /usr/bin, /usr/local/bin
            管理命令:/sbin, /usr/sbin, /usr/local/sbin
        共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
            32bits的库:/lib, /usr/lib, /usr/local/lib
            64bits的库:/lib64, /usr/lib64, /usr/local/lib64

        注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件

        命令必须遵循特定格式规范:exe, msi, ELF(Linux)
            ~]# file /bin/ls

        命令分为两类:
            由shell程序的自带的命令:内置命令(builtin)
            独立的可执行程序文件,文件名即命令名:外部命令

OPTIONS:
    指定命令的运行特性;
    选项有两种表现形式:
        短选项:-C, 例如-l, -d
            注意:有些命令的选项没有-;
            如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
        长选项:--word, 例如--help, --human-readable
            注意:长选项不能合并;

        注意:有些选项可以带参数,此称为选项参数;

ARGUMENTS:
    命令的作用对象;命令对什么生效;
    注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
    例如:ls -ld /var /etc 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在学习Linux前大家先要对计算机有相应了解,计算机系统,计算机硬件构成,操作系统,Linux相关介绍,获取Li...
    不知岁月惜阅读 3,971评论 0 2
  • linux的哲学思想 一切皆文件;把几乎所有资源,包括硬件设备都组织为文件格式 由众多单一目的小程序组成:一个程序...
    知且行阅读 2,144评论 0 0
  • https://www.jianshu.com/p/341bc031ea2b 书:The linux comman...
    ZzGo12阅读 3,926评论 0 0
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,322评论 0 5
  • 才不是什么有文笔的才子… 就是突如其来的念头 那时些许清醒的大脑理清的胡思乱想 自己,已经是个十九岁的少年了。在...
    白灼喔阅读 2,490评论 0 1