Linux的哲学思想

        1.一切皆文件

         把几乎所有资源、包括硬件设备都组织为文件格式

        2.由众多单一目的的小程序组成,一个小程序只实现一个功能,组合小程序完成复杂任务

        3.尽量避免与用户交互

               好处:实现脚本编程,以自动完成某些功能,在设计之初就为脚本编程提供了一个保证或可能性

        4.使用纯文本文件保存配置信息

               目标:一款合适的文本编辑器,就能完成系统配置工作。

操作系统的组成部分: 

        硬件hardware  》  操作系统kemel  》  库  》  程序

        库可以让我们更方便调动操作系统,但少数人不需要库也能调动操作系统,所以库不是必须的,库的输出接口叫库调用。

终端设备:用户与主机进行交互就必须用到的设备

           终端分为:物理终端、虚拟终端

                 物理终端也叫控制台Console

        Ctre+Alt+F(N)可以切换终端

    系统启动以后一般默认从虚拟终端F1上进行登录而不会使用物理终端即便是在物理设备上。

    刚开机时程序还未运行起来,所以信息都需要输出,这时候应对的是物理终端,一旦程序启动完成,默认就以虚拟终端F1作为用户登录提供的界面,但若是默认启动的是图形界面那么它也会启动图形界面。 

       图形终端:它也是虚拟的,是附加在物理终端上以软件形式实现的终端,但额外会提供桌面环境,所以图形终端也是虚拟终端的一种

    在图形界面下点击右键或某一个应用程序里面有一个opem in Terminal  在里面同样能输入命令。这种终端叫模拟终端。

   任何一个可以输入命令的交互式接口都是终端。

   模拟终端:纯粹是以软件方式实现,而且不会附加在本地物理终端上,是附加在图形终端或其他远程终端之上的终端

tty命令:查看当前的终端设备的设备文件

     虚拟终端设备文件会显示:/dev/ttyX    X为数字

     模拟终端设备文件会显示/dev/tty/X     X从0到无穷大   

    图形界面打开模拟终端,设备文件会显示:/dev/pts/0

    物理终端的设备文件:/dev/console

   交互式接口:启动终端以后,在终端设备上附加一个交互式程序

   交互式应用程序有:

                 GUI:图形界面

                         提供一个窗口管理器和一个桌面系统     

                 CLI:文本界面

                          shell程序:不同程序员开发,但凡能实现外壳功能的都可以叫shell

               在shell中:# 和$是命令提示符

                      #是管理员提升符

                      $是普通用户提示符

    如何切换shell:

           输入命令:/bin/要切换的shell程序的名字,如bash

   如何查看系统所支持的所以shell类型:

           输入命令:cat/etc/shell

命令 :

     输入命令,回车意味着提请shell程序找到所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,运行起来后就会有一个或多个进程

运行中的程序叫进程

在shell中可执行的命令有两类:内建命令、外部命令

        内建命令:由shell程序自带的,而且通过命令形式提供

        外部命令:当前系统的某文件系统路径下有对应的可执行程序文件

如何区分内建命令或外部命令:

            输入type+命令,如果出现is a shell buil tin 说明这是一个内建命令,内建命令是找不到路径的,因为他是shell自带的命令


命令的运行格式:

              COMMAND  [OPTIONS.....]  [ARGUMENTS.....]

               命令               选项                参数

 选项:

            一个命令的功能可能有很多种,选项其实是用于启用或关闭命令的某些或某个功能

         选项一般由横线引导,一般有两种形式:

              短选项:一个横线加单个字符   如  -c   -l   -h

              长选项:两个横线加一个单词   如  --word   --human-readable

              多个短选项同时使用时可以合并:  如  -lc   -hc

              长选项一般不能合并

              但如果不合起来使用,中间一定要用空白隔开

       选项与选项、选项与参数、选项与命令之间都要用空白隔开

参数:

         参数是可选的,但有些命令是必须的

         参数指的是命令的作用对象或命令的生效对象

         参数是向命令提供数据的,参数也可以有多个但参数之间要用字符隔开

     命令通常写在最左侧,命令本身通常是一个可执行的二进制程序或者是shell自带的内建命令

注意:

         1、多选项、以及多参数和命令之间都应该用空白字符隔开,空白字符可以是一个,也可以说多个

         2、取消命令执行:ctrl+c


文件系统

           文件系统就是能够定位的我们能够理解的编制方式组成

           从最顶层开始向下不断层进以后找到一个文件的格式就叫文件路径

   绝对启始位置:这个启始位置相对于其他文件而言绝对不可能有其他启始位置

根文件系统:所有文件的路径必须从这个位置开始,然后可以有多个路径,最后层级向下,最后一个节点叫叶子节点

目录是什么:是路径的映射方式,而不是文件夹

文件是什么:

         文件由两类数据组成:

                                元数据:是文件属性部分,如文件的大小、名字

                                数   据:是文件的内容

路径中每一个可以分叉的叫目录,最后不能分叉的真正存放数据的叫文件,目录也是一种文件,但它是一种特殊的文件

      路径分为: 

            绝对路径:从根目录起始的路径

            相对路径:对当前位置起始的路径

 如何查看当前在那个路径下:使用Pwd命令



Linux文件下的系统有一下几种特性:

        1、文件名严格区分大小写, 如  file  File  FILE 是不同的文件

        2、文件名可以使用除/以外的任意字符 

            /字符的意义 :(1)、它代表根目录

                                  (2)、它是路径分隔符

       3、文件名长度最长不能超过255个字符

       4、所有*开头的文件均隐藏文件


Linucx命令帮助的获取

       如何获取内部命令的帮助:

              输入:help+命令        可以获取其详细帮助手册

            任何一个内建命令都是shell自带的,想要获取shell的使用;先确定shell的版本

         输入:echo $SHELL    可以显示shell版本   显示为bash

         例:man   bash

         注意:bash自己是一个外部命令,但它里面有大量的内部命令

        可以获取很多bash的使用信息,而且介绍了bash内建的一些命令

        内建命令不能使用man去获取帮助,因为bash自己就是一个外部命令,使用man只会打开bash的使用手册,内建命令要使用内建命令的help来获取      

       如何获取内部命令的帮助:

              (1)、每一个命令都会自带一个简要的使用帮助手册,通常由命令自身的选项来实现

         例:命令  --help

               命令  -h

              (2)、每一个命令对Linux而言,都有帮助手册在某个目录下存放,存放的地方叫使用手册manual 

                       manual可以简写为man

                 输入:man   命令     

                      可以找到帮助手册

              (3) 、信息页

                      输入:info   命令

                      信息页支持超链接,允许在某些关键字符之间跳来跳去     

              (4)、每一个应用程序自身的帮助文档

              (5) 、程序官方文档

                      打开官方站点,里面会有这个程序的详细使用方式  

              (6)、发行版的官方文档

                     发行版的官方文档是我们学习某一个发行版不可多得的,而且很权威的一个资料

              (7)、Google

                    使用Google搜索

    外部命令都有一个可执行程序,位于文件系统某目录下。 

         输入:which或whereis  来获取它在那个位置

         shell程序搜寻可执行程序文件的路径定义在PATH环境变量中

         输入:echo $ PATH  可查看有哪些路径

        注意:它寻找文件是自左自右的,如果在第一个路径下找到了,就不会去找第二个路径,所以它的先后次序很重要

        shell搜寻到的外部命令的路径结果会缓存到KV(key-value) 

        输入:hash  可查看KV

        KV缓存有一个副作用,如果其中指向的文件发生改变,缓存中的内容就会失效,需要手动更新,否则就会出错。

       当缓存命中了缓存中的结果是错误的,这时就需要清除缓存

       输入: -d  命令   表示你要清除的缓存

                 -r   表示清除全部缓存