基础知识

硬件设备接口非常底层和简陋,叫硬件规格,不同厂商生产的接口不一样,写一款程序,多个机器都能运行,叫高级语言,但高级语言在哪里跑,需要编译器编译,汇编器汇编,才能在主机上运行。应用程序跑在硬件上意味程序需要驱动各种硬件,写程序之前还要写驱动,非常困难。所以有了操作系统内核:kernel,来应对硬件的复杂性。

操作系统研发非常困难,目前国内还没有像样的操作系统。linux内核,支持所有cpu,内核源代码编译成所有机器的机器语言。现在的嵌入式系统大多数都是跑linux。kernel把底层的复杂性隐藏起来,向上提供了系统调用。为了保证底核的统一性,做封装--库(libraries),离用户更近一步。从此程序员写程序就可以直接调用库里所提供的功能。库本身无论底层是什么样的cpu架构,库之上是统一而规范的。国际统一posix规范。

程序员的编程接口有API:application program interface 。但运行时面对的接口是ABI:application binary interface 应用二进制接口。

程序管理;

 程序的组成部分;     二进制程序:最关键的部分,能运行的内容     配置文件:为了让程序运行,在内部提供接口,通过配置文件保留     库文件:二次开发,需要调用别人的库     帮助文件: 程序包管理器:     x文件:程序的组成文件打包成一个或有限几个文件            安装:            卸载:            查询:

linux使用

 查看bash类型:echo $SHELL 用户界面 远程连接:ssh协议 secure shell   查看系统是否监听于tcp协议的22号端口   有个22,就表示ssh处于运行状态   ~]#ss -tnl    查看系统ip   ~]#ifconfig    确保防火墙处于关闭状态   ~]#iptables -L -n 查看防火墙,如果有,清掉。iptables -F   ~]#iptables -F   centos7 执行systemctl disable firewalled.service               systemctl stop firewalled.service   centos6 执行service iptables stop               chkconfig iptables off

终端设备:

多任务,多用户接口程序叫进程1物理终端,控制台:consle2虚拟终端:默认启动6个、  ctrl+alt+F[1-6] 在哪个虚拟终端启动,及就在哪个虚拟终端上3串型终端4伪终端

linux的哲学思想之一:

  一切皆文件:硬件设备也通过文件表示;    物理终端:/dev/console    虚拟终端:/dev/tty#[1,6]    串型终端;/dev/ttyS#    伪终端:/dev/pts/#

注意:在启动设备之后,在其上关联一个用户接口程序,即可实现与用户交互; 查看终端设备:tty 查看shell类型:echo $SHELL

CLI接口: 命令行接口: [root@dasdf ~ ]# 命令 prompt(命令提示符) root当前登录用户 

dasdf主机名,非完整格式主机名
~:用户当前所在的目录(current directory),也称为工作目录(working directory);相对路径 #:命令提示符 #:管理员账号,为root用户,拥有最高权限,执行所有操作 $:普通用户,非root用户,不能执行系统管理类操作 注意:建议使用非管理员账号登录 执行管理操作临时切换至管理员,操作完成后及退回

几个基础命令

1、tty:查看当前终端设备

2、ifconfig:查看活动接口的ip地址

3、 echo:回显 1,回显字符 2,如果是变量,则显示变量值,叫变量引用

4、 ping:探测网络的目标主机与当前主机之间的联通性 ctrl+c 1,终止命令执行 2,命令取消

5、 关机命令: centos 7 ~]# systemctl poweroff 重启reboot

stallman : 自由含义:自由学习和修改;自由使用;自由分发;自由创建衍生版;

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

思考:文件是什么?众多文件如何有效组织起来? 目录:路径映射; 文件:有边界的在磁盘上的,存储空间存储的一段流式数据,对文件可以做到按名存取 文件系统:划分成层级,层级方式管理文件机制。在文件系统下,靠目录来找 /dev/pts/2 最左侧的/表示根目录,其他/表示路径分隔符 linux的路径分隔符是/ window的是\ 层级结构;有索引; /:原初起点; 第二层结构: 第三层结构: 倒置树状结构;

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

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

用户有家目录:home, 用户的起始目录:普通用户管理文件的位置 工作目录:

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

根目录和家目录的区别: 管理员权限下:/是根目录,家目录在根目录下面,空敲cd只是回到文件的家目录

普通用户登录:/是根目录,家目录与根目录是分开的,空敲cd只是回到文件的家目录

回顾: 开源协定: GPL,LGPL,BSD,Apache

 BSD:   1、如果二次发布的产品中包含源代码,则在用开源代码的作者或组织,以及原来的代码中必须带有原来的代码中的BSD协定;   2、如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;   3、不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广;代码的共产主义运动;linux文件系统,文件,目录:   倒置树状结构:      目录:路径      文件:存储在磁盘中    文件名:严格区分字符大小写;路径分隔符/路径:  绝对路径  相对路径

程序的组成部分:二进制程序文件、库文件、配置文件、帮助文件 前两者是二进制格式,后两者通常是文本格式 二进制、库文件:可执行文件,库文件不能独立执行,只能被调用时执行 配置文件、帮助文件:用查看工具打开,可被查看其内容的文件

人机交互界面:交互式接口 GUI CLI [login@hostname workdir]#命令

linux基础知识 命令的语法统一格式: #COMMAND(命令) OPTIONS(选项) ARGUMENTS(参数)

 COMMAND :(命令)  发起一个命令(进程):请求内核将某个二进制程序运行为一个进程;     程序--> 进程     静态(永远不会删除)--> 动态(有生命周期,运行完会自动退出)     命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;        多数程序文件都存放在:/bin, /sbin,/usr/bin,/usr/sbin,/usr/local/sbin           普通命令:/bin, /usr/bin/,/usr/local/bin           管理命令:/sbin,/usr/sbin/,/usr/local/sbin        共享库:二进制文件(不能单独启动运行)            usr/local/lib,/usr/local/lib64            64bits的库:/lib64,/usr/lib64,/usr/local/lib64注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件命令必须遵循特定格式规范:exe,msi(windows),ELF(linux)file:用来查看文件的内容格式的类型   ~]# file /bin/ls 命令分为两类:   由shell程序的自带的命令:内置命令(builtin)   独立的可执行程序文件,文件名即命令名:外部命令 shell程序是独特的程序,负责解析用户提供的命令;词法分析,语法分析       环境变量:        PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件:        [root@localhost ~]# echo $PATH        /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin      查找次序:自左而右;

## 查看命令类型: type COMMENT

内部命令没有路径

OPTIONS:(选项) 指定命令的运行特征:

 选项有两种表现形式;     短选项:-c,例如-l,-d         注意:有些命令的选项没有-;         同一命令同时使用多个短选项,多数可合并:-l -d=-ld     长选项:--word,例如--help,--human-readable          注意:长选项不能合并;     注意:有些选项可以带参数,此称为选项参数

ARGUMENT:(参数) 命令的作用对象:命令对什么生效;

   注意:不同的命令的参数;有些命令可以带多个参数,多个之间以空白字符做分隔;

例如:ls -ld /etc /var

获取命令的使用帮助:

内部命令:   help COMMAND 外部命令:    (1)命令自带简要格式的使用帮助          # COMMAND --help     (2)使用手册:manual        位置:ls /usr/share/man          #man COMMAND           SECTION:                NAME:功能性说明                SYNOPSIS:命令使用语法格式                 DESCRIPTION:描述                OPTIONS:选项                EXAMPLES:使用示例                AUTHOR:作者                BUGS:报告程序bug的方式                SEE ALSO:参考                。。             特别关注:SYNOPSIS:                []:可选内容;                <>:必须提供的内容                a|b:多选一;                ...:同类内容可出现多个;         使用手册:压缩格式的文件,有章节之分;           /usr/share/man               man1,man2,....              1:用户命令;              2:系统调用;              3:C库调用;              4:设备文件及特殊文件;              5:文件格式:(配置文件格式)              6:游戏使用帮助;              7:杂项;              8:管理工具及守护进行;          ~]# man 数字 COMMAND              注意:并非每个COMMAND在所有章节下都有手册;                 查看:                   ~]# whatis COMMAND                   注意:其执行过程是查询数据库进行的;                     手动更新数据库:                       ~]# makewhatis        man命令打开手册以后的操作方法:          翻屏:             空格键:向文件尾部翻一屏             b:向文件首部翻一屏             ctrl+d:向文件尾部翻半屏;             ctrl+u:向文件首部翻半屏;             回车键:向文件尾部翻一行;             k:向文件首部翻一行;             G:跳转至最后一行;             #G:跳转至指定行;             1G:跳转至文件首部;          文本搜索:查找时,不区分大小写             /keywork:从文件首部向文件尾部依次查找;             ?keywork:从文件尾部向文件首部依次查找;               n:与查找命令方向相同;               N:与查找命令方向相反;           退出:            q:quit      选项:        -M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开之     练习:获取useradd命令的用法        (1)添加用户gentoo;            useradd gentoo  验证id gentoo        (2)添加用户slcakware,要求指定其所用的shell为/bin/tcsh            useradd -s /bin/tcsh slackware              验证tail -l(数字1)  /etc/passwd     (3)info COMMAND          获取命令的在线文档;     (4)很多应用程序会自带帮助文档:/usr/shate/doc/APP-VERSION           README:程序的相关的信息;           INSTALL:安装帮助;           CHANGES:程序发展过程中随版本更新时的改动信息。      (5)主流发行版官方文档          http://www.redhat.com/doc       (6)程序官方的文档:                 官方站点上的“Document”       (7)搜索引擎            google               keyword filetype:pdf               keyword site:domain.tld

常用命令:

linux文件系统:   1、文件名名称严格区分字符大小写;   2、文件可以使用除/以外的任意字符;   3、文件名长度不能超过255个字符;   4、.开头的文件为隐藏文件;          .:当前目录          ..:当前目录的上一级目录             /etc/sysconfig/               .:syscongif               ..:etc 工作目录:working directory 家目录:home常用跟文件系统相关的命令   pwd:printing working directory        显示工作目录   cd:changing directory       切换目录         cd [/PATH/TO/SOMEDIR]            cd:切换回家目录;              注意:bash中,~表示家目录;            cd ~:切换回自己的家目录            cd ~SUERNAME:切换至指定用户的家目录;(非常有用) cd -:在上一次所在目录与当前目录之间来回切换            cd ..上一级目录            cd../var/log 上一级目录的/ver/log下,相对目录的标准边上            cd ./var 当前目录下进到var目录            $PWD:当前工作目录            $OLDPWD:上一次的工作目录    ls:list,列出指定目录下的内容       ls [OPTION]... [FILE]...        -a:显示文件,包括隐藏文件        -A:显示除.和..之外的所有文件        -l:--long,长格式列表,即显示文件的详细属性信息            -rw-r--r--  1 root   root    17395 Jul 26 07:47 boot.log            -:文件类型,-,d,b,c,l,s,p            rw-r--r--              rw-:文件属主的权限              r--:文件属组的权限;              r--:其他用户(非属主、属组)的权限                   1:数字文件被硬链接的次数;            root:属主,文件的所有者            root:文件的属组            17395:数字表示 文件的大小,单位是字节;            Jul 26 07:47:文件最近一次被修改的时间            boot.log:文件名         -h,--hunman-readable:对文件大小单位换算;换算后的结果非精确         -d:ld结合起来使用,查看目录自身属性,而非其内部的文件列表         -r:reverse,逆序显示;         -R:recursive,递归显示;    cat:concatenate 连接文件显示在标准输出上       文本查看工具         file 查看            cat  /etc/fstab           cat /etc/passwd        cat [OPTION]...[FILE]..          -n:给显示的文本行编号;          -E:显示行结束符$;    tac:cat一样,每一行逆序显示        文件文本查看工具         file 查看            tac  /etc/fstab           tac /etc/passwd        tac [OPTION]...[FILE]..          -n:给显示的文本行编号;          -E:显示行结束符$;    file:查看文件内容类型;       file [FILE]..    echo:回显       echo [SHORT-OPTION]... [STRING]...          -n:不进行换行;          -e:让转义符生效;                \n:换行                \t:制表符                \v                \b            STRING可以使用引号,单引号和双引号              单引号:强引用,比较傻,变量引用不会执行替换;              双引号:在中间,变量引用会被替换        注意:变量引用的正确符号          ${NAME}   关机或重启命令:     shutdown [OPTIONS...] [TIME] [WALL...]          OPTIONS:            -h:halt            -r:reboot            -c:cancel          TIME:             now             hh:mm             +m               +0          WALL    日期相关的命令:       linux:系统启动时从硬件读取日期和时间信息;读取完成以后,就不再与硬件相关联;         系统时钟         硬件时钟       date :系统时钟           显示日期时间:[OPTION]... [+FORMAT]           设定日期时间:[MMDDhhmm[[CC]YY][.ss]       hwclock,clock:硬件时钟           显示或设定硬件时钟             -s :--hctosys 以硬件为准,把系统调整为与硬件时间相同             -w : --systohc  以系统为准,把硬件调整为与系统时间相同       cal:日历         cal [[month] year]