码迷,mamicode.com
首页 > 其他好文 > 详细

马哥预习视频

时间:2016-07-29 23:07:02      阅读:483      评论:0      收藏:0      [点我收藏+]

标签:google   keyword   manual   linux   

马哥预习视频第三天


          linux 根文件系统


回顾:linux文件系统的特性,命令的使用帮助,常用的命令

   

    如何使用帮助,内部命令help,外部man

    官方文档

    自带文档(README,CHANGELOG,INSTALL)

    发行版的文档

    google


    Linux 内核:documentation


    man非常重要:manual,使用手册

       章节有很多whatis keyword

       man # KEYWORD


         SECTION:

             NAME:

             SYNOPSIS

              [],<>,|,{}

             ..


          控制命令

             space,b

             enter,k

             ctrl+d,ctrl+u

             q

             #G


             /keyword

             ?keyword


  基础命令:pwd,cd,ls,echo,date,clock,cal,hwclock,cat,tac,file,type,tty,shutdown,reboot,


  linux的组成部分

    硬件的组成部分,由内而外,能够操作硬件的只能是内核,因此内核整个把硬件封装起来,所有硬件提供的hardware被隐藏起来,把硬件的功能转化为了系统调用,程序要和内核打交道,要通过系统调用。内核把硬件隐藏起来,抽象为系统调用。外面要打交道,需要通过系统调用。文件系统,硬件功能,安全加密等,很多通用的功能在内核。所有的工作要通过应用程序。也可以通过库函数来实现,库只是为了简化程序员研发困难度的,有了库以后可以把很多功能提供成公共功能模块,库文件没有独立单独的执行入口,只能被其他程序调用时方可运行。各种应用程序,程序员研发应用程序时调用了库,这个程序执行启动为进程时,首先把它依赖的库装载到内存中才能运行的,因为库本身就是这个程序的组成部分。如果一个程序员在开发时, 调用了库,在编译时做了静态编译(程序员编译好以后,也调用了库,但在编译的时候把所调用的每一个库都直接编译到程序中去,把每一个用到的库复制了一个副本,直接放在程序中,程序到任何位置都能运行)



  linux的文件系统:

     linux要用的库,是由glibc提供,


     程序编译方式:

       动态链接

       静态链接



 进程的类型:

   终端:硬件设备,关联一个用户接口


   与终端相关:通过终端启动

   与终端无关:操作引导启动过程当中自动启动



  操作系统的组成:

    静态:内核文件(kernel),应用程序(application)

    

    文件系统:层级结构,方便去查找每一个文件,


FHS;

   filesystem hierachy standard标准文件系统

    /bin:供所有用户使用的二进制用户文件;

    /sbin:供系统管理员使用的工具程序;

    /boot:引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等

    /dev:所有硬件设备的设备文件,存储特殊文件或设备文件;

         设备有两种类型:字符设备(线性设备)、块设备(随机设备);

    /etc:系统程序的静态配置文件,只能是静态

    /home :普通的家目录的集中位置;一般每个普通用户的家目录默认此目录下与用户同名的子目录,/home/USERNAME 

    /root:管理员的家目录;可选;

    /lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库以及为内核提供内核模块,

          libc.so.*:动态链接的C库;

          ld*:运行时链接器/加载器;

          modules:用于存储内核模块的目录;

    /lib64:64位系统特有的存放64位共享库的路径;

    /media:便携式设备挂载点,cdrom,floppy等;

    /mnt:其他文件系统的临时挂载点;

    /opt:附加应用程序的安装位置;可选路径

    /srv:当前主机为服务提供的数据;主机特有

    /tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;

    /usr:/usr hierarchy,全局共享的只读数据路径;重要

         bin,sbin

         lib,lib64

         include:C程序头文件;

         share:命令手册页和命令自带文档等架构特有的文件存放位置

         local:另一个层级目录;

         X11R6:x-windows程序的安装位置

         src:程序源代码文件的存储位置

     /usr/local:local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;

     /var:/var hierarchy,存储常发生变化的数据的目录;

         cache   application cache data

         lib     variable state information

         local   variable data for /usr/local

         lock    lock files

         log     log files and directories

         opt     variable data for /opt

         run     data relevant to running processes

         spool   application spool data

         tmp     temporary files preserved between system reboots

     /proc:基于内存的虚拟文件系统,用于内核及进程存储其相关信息:他们多为内核参数,例如net.ipvt4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/,因此期完整路径为/proc/sys/net/ipv4/ip_forward;

      /sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理linux设备提供一种统一模型的接口;



bash基础特性

linux基础命令及命令历史


linux系统上的文件类型:

   -:常规文件:即f;

   d:directory,目录文件:完成路径映射的

   b:block device,块设备文件,以“block”为单位进行随机访问;特殊文件

   c:charactor device,字符设备文件,支持以“character”

为单位进行线性访问;

     major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序

     minor number:次设备号,用于标识同一类型的不同的设备;

         8位二进制:0-255

   l:symbolic link,符号链接文件;

   p:pipe,命名管道;

   s:socket,套接字文件;两个进程通信时套接的;


基本命令:

   命令类型:

      外部命令

      shell内嵌命令原名被隐藏

          bash:


      type COMMAND

         内部:builtin

         外部:显示为命令文件路径;

             注意:命令可以有别名;别名可以与原名相同,此时原名被隐藏;此时如果要运行原命令,则使用\COMMAND;

      命令别名:

          获取所有可用别名的的定义;

              ~]# alias

           定义别名:

               ~]#alias NAME=‘COMMAND‘

           撤销别名:

               ~]#unalias 有效NAME


               注意:仅对当前shell进程有效




   which命令

        显示命令完整路径

        

        which [options]  programname [...]

        --skip-alias:忽略别名

   

   whereis 命令

      whereis  -  locate the binary, source, and manual page files for a command

 

       whereis [options] name...

             -b:仅搜索二进制程序路径:

             -m:仅搜索使用手册文件路径

          

    who命令:

      who - show who is logged on

     

       who [OPTION]...

            -b:系统此次启动的时间;

            -r:运行级别;



    w命令:

      增强版的who命令;


bash的基础特性:

     

     命令历史:shell进程会其回话中保存此前用户提交执行过的命令;

      ~]# history

          定制history的功能,可通过环境变量实现;

              HISTSIZE:shell进程可保留的命令历史的条数;

              HISTFILE:持久保存命令历史的文件;

                  .bash_history (ls -a 家目录下的隐藏文件)

              HISTFILESIZE:命令历史文件的大小

                 echo $HISTFILESIZE  结果1000


       history -c清空命令历史  history -r 恢复

       history -r:把文件读取命令历史至历史列表中;

       history -d: 删除指定命令history -d 100


       history -w:把历史列表中的命令追加至历史文件中; (保存到.bash_history里)

       history #:显示最近的#条命令;


  调用命令历史列表中的命令:

       !#:再一次执行历史列表中的第#条命令;

       !!:再一次执行上一条命令;

       !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;


           注意:命令的重复执行有时候需要依赖于幂等性;


  调用上一条命令的最后一个参数:

      快捷键:ESC,. 按ESC松开,再按.

      字符串:!$


  控制命令历史记录的方式:

       环境变量:HISTCONTROL  ignoredups

         ignoredups:忽略重复的命令;

         ignorespace:忽略以空白字符开头的命令;

         ignoreboth:以上两者同时生效;


      修改变量的值:(仅对当前shell有效)

         NAME=‘VALUE‘

  

回顾:

    

    FHS、命令及bash命令历史

        FHS:linux的根文件系统是有特定格式标准,由某种层级结构组成的,其中有好多个一级子目录,任何一个程序都有四部分组成,这四个部分有

        二进制程序文件bin,通常安装操作系统自身需要的

        库文件lib,

        配置文件etc ,

        帮助文件usr

        普通用户家目录home,

        管理员的家目录root,


        放引导文件boot,

        挂载点media,mnt。

        两个虚拟文件proc,sys

        临时文件tmp,

        为服务提供数据srv,

        独立的文件opt

        设备目录,dev

         usr下可以有很多二进制程序,独立的用来专门提供全局共享的只读文件路径,经常用来安装程序

               bin,sbin,lib,lib64,share。local。。

          var几个存放文字会经常发生变化

              cache缓存,lib,log,。。。

  

  命令:which,whereis,who,w,alias,unalias

  命令历史:history

  文件类型:-,d,b,c,l,p,s


linux基础知识

bash的基础特性:

  

   命令补全:

       shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当成命令;

       命令处理机制:

           查找内部命令:

           根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;


        给定的打头字符串如果能唯一标识某命令程序文件,则直接补全;如果不能唯一标识某命令程序文件,再击tab键,会给出列表;


    路径补全:

        在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件;

           tab:

              如果能唯一标识,则直接补全;

              否则,再一次tab,给出列表;



目录管理类的命令:

     mkdir,rmdir,

    

     mkdir:make directory


     mkdir [OPTION]... DIRECTORY...

 

    重要:   mkdir /tmp/x/y/z

     注意:  z(机名),方为命令的作用对象;机名之前的路径必须要存在;

          -p:自动按需创建父目录;

          -v:verbose,显示详细过程;

          -m MODE(选项参数):在创建目录时设置权限的;否则默认权限

     

     rmdir:remove empty director           

           仅用于删除空目录

         rmdir [OPTION]... DIRECTORY...

            -p:删除某目录后,如果其父目录为空,则一并删除

            -v:显示过程;


问题1:如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1a,/tmp/x/y1/b?

问题2:如何创建a_c,a_d,b_c,b_d:

     mkdir {a,b}_{c,d}

问题3:创建如下目录结构:

    /tmp/mysysroot/

        bin

        sbin

        etc

          sysconfig

             network_scripts


         usr

           bin

           sbin

           local

             bin

             sbin

             etc

             lib

           lib

           lib64

         var

            cache

            log

            run      


/tmp/mysysroot

├── bin

├── etc

│   ├── sysconfig

│      └── network-scripts

│   

│       

├── sbin

├── usr

│   ├── bin

│   ├── lib

│   ├── lib64

│   ├── local

│   │   ├── bin

│   │   ├── etc

│   │   ├── lib

│   │   └── sbin

│   └── sbin

└── var

    ├── cache

    ├── log

    └── run



bash的基础特性之一:命令行展开 

    ~:自动展开为用户的家目录,或指定的用户的家目录;

    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

      例如:/tmp/{a,b},相当于/tmp/a /tmp/b


   centos7:安装tree命令;yun install tree


tree命令:

    tree [option] [directory]要显示的层级;

      -L level:指定


bash的基础特性:命令的执行状态结果

   

     命令执行的状态结果:

         bash通过状态返回值来输出此结果:

              成功:0

              失败:1-255


          命令执行完成之后,其状态返回值保存于bash的特殊变量$!中;

      注意:立即获取,只能获得最近一条的状态结果

命令正常执行时,有的还会有命令返回值;

    根据命令及其功能不同,结果各不相同;

      

命令的状态返回值(状态结果),命令自己的运行结果

      状态结果:看返回值

      命令结果:执行的命令


可以引用命令的执行结果:

   $(COMMAND)

   或者`COMMAND`  反引号,引用命令的执行结果


bash的基础特性:引用

   强引用:‘‘ 其内部字串直接显示

   弱引用:""  变量会替换,会显示变量中所存储的值

   命令引用:``  建议使用$()


bash的基础特性:快捷键

  ctrl+a:跳转至命令行首

  ctrl+e:跳转至命令行尾

  ctrl+u:删除行首到光标所在处之间的所有字符

  ctrl+k:删除光标所在处到行尾的所有字符

  ctrl+l:清屏,相当于clear(目前不能用)








 linux文件查看及管理  


文本查看类命令:cat,tac,head,tail,more,less


   分屏查看命令:more和less

   cat /etc/rc.d/init.d/functions  记住这个路径 

   more命令:

      more FILE

        特点:翻屏至文件尾部后自动退出;


   less命令:

       less FILE



   head命令:

     查看文件的前n行:

        head [options] FILE

           -n #

           -#


   tail命令:

      查看文件的后n行:

         tail [options] FILE

            -n #

            -#

            -f:查看文件尾部内容结束后不退出,跟随显示新增的行;


    stat命令:

      stat - display file or file system status


      stat  FILE...

     

    文件:两类数据

       元数据:metadata

       数据:data

     区别意思:一本书前面有索引,索引帮助快速检索,索引也需要占用空间,目录就是元数据,正文才叫数据;  


   时间戳:  

     访问时间Access: 2016-07-29 13:12:46.140365682 +0800

     更改时间Modify: 2016-07-29 13:12:43.255365765 +0800

     最近改动Change: 2016-07-29 13:12:43.255365765 +0800


stat看到的是元数据,cat看到的是数据



touch命令:


  change file timestamps


  touch [OPTION]... FILE...

   -c:指定的文件路径不存在时不予创建;

   -a:仅修改access time

   -m:仅修改modify time

   -t STAMP

      [[CC]]YY]MMDDhhmm[.ss]




文件管理类命令及变量基础


文件管理工具:cp,mv,rm


  cp命令:copy

     源文件;目标文件;


     文件复制,新建一个文件,复制文件的数据,不是

元数据

       单源复制:cp [OPTION]... [-T] SOURCE DEST(目标目录) 单个文件(文件或目录)

       多远复制:cp [OPTION]... SOURCE... DIRECTORY

                 cp [OPTION]... -t DIRECTORY SOURCE...

                    targe目标之一


        单源复制:

             如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;

             如果DEST存在:

                 如果DEST是非目录文件:则会覆盖目标文件;

                 如果DEST是目录文件:则现在DEST目录下创建一个与源文件同名的文件,并复制其数据流至目标文件


              cp只能复制文件,不能复制目录


        多源复制:cp [OPTION]... SOURCE... DIRECTORY

                 cp [OPTION]... -t DIRECTORY SOURCE...


            如果DEST不存在:错误;

            如果DEXT存在:

               如果DEST是非目标文件:错误;

               如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;


           -i :-interactive,交互式复制,覆盖之前提醒用户确认

           -f:强制覆盖目标文件;

           -r:递归复制目录;

           -d:复制符号链接文件本身,而非其指向的源文件;


           -a:archice,用于实现归档(备份)

           --preserv=

             mode:权限

             ownership:属主和属组

             timestamps:时间戳

             context:安全标签

             xattr:扩展属性

             links:符号链接

             all:上述所有属性



  mv命令 :move

      mv 文件 文件


      常用选项:

        -i:交互式

        -f:force


  rm 命令:remore

     rm [option] file


     常用选项:

       -i:interactive

       -f:force

       -r:recursive


       删除目录:rm -rf /PATH/TO/DIR



 rm -rf / 非常危险,删除根目录


 注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录:(模拟回收站)




 变量:

    命名的内存空间;

        变量类型:

            字符型

            数值型

               精确数值型

               近似数值型


      存储格式、数据范围、参与运算;


      8:1000  ,计算机0000 1000

      16:10000   0001 0000


      ASCII码:


      变量的赋值操作:

         name=tom 左侧是名字,右侧是值,把值存储名字所指定的内存空间

         


马哥预习视频

标签:google   keyword   manual   linux   

原文地址:http://11541229.blog.51cto.com/11531229/1831863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!