• 04 Linux根文件系统和目录结构及bash特性


    Linux文件系统:

      Linux:glibc

      程序编译方式:

        动态链接式编译

        静态链接式编译

      进程的类型:

        终端:硬件设备,在硬件设备上可以关联一个用户接口,从而让用户用此接口与操作系统打交道

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

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

      操作系统的组成:

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

          文件系统:层级结构

      FHS:

         Filesystem Hierarchy Standard(文件系统层次化标准)

            /bin:所有用户可用的基本命令程序文件

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

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

            /dev:存储特殊文件或设备文件

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

            /etc:系统程序的配置文件,只能为静态的不能为二进制文件

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

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

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

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

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

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

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

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

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

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

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

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

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

              bin,sbin

              lib,lib64

              include:C程序头文件

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

              local:另一个层级目录:

              x11R6:X-Window程序的安装位置

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

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

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

              /var/cache/ 应用程序的缓存数据

              /var/lib/  状态信息。由程序在运行时维护的持久性数据。

              /var/log/ 日志文件

              /var/run 已经被/run/替代,自最后一次启动以来运行中的系统的信息:如运行中的守护进程,当前登录的用户。

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

              /sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径

                主要作用:在于为管理Linux设备提供一种一模型的接口

          Linux文件系统层次结构标准简介(参考网址):

                https://blog.csdn.net/qq_29753285/article/details/69791332

      Linux系统上的文件类型:

          -:常规文件;即f;

          d:directory,目录文件

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

          c:character device,字符设备文件,支持以“character”为单位进行先行访问

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

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

          l:symbolic link:符号链接文件(相当于Windows当中的快捷方式);

          p:pipe,命名管道;

          s:socker,套接字文件

      基本命令:

        命令类型:

          外部命令

          shell内嵌命令

          type command

            内部:builtin

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

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

          命令别名:

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

              ~]# alias

            定义别名:

              ~]# alias NAME="command"

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

            撤销别名:

              ~]# unalias NAME

        which命令

          which - shows the full path of (shell) commands.(完整的显示命令路径)

          which [options] programname [...]  (使用格式)

            --skip-alias:忽略别名

          whereis命令:

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

            可以用来查找二进制(命令)、源文件、man文件。与which不同的是这条命令可以通过文件索引数据库而非PATH来查找的,所以查找的面比which要广

            whereis [options]  name...

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

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

            who命令:

                who - show who is logged on

                显示出系统中有哪些用户登录系统,显示的资料包含了使用者的ID、使用的登录终端、上线时间、呆滞时间、CPU占用,以及做了些什么。使用权限为所有用户

                who [OPTION]...

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

                  -r:运行级别

            w命令:

               w - Show who is logged on and what they are doing.

               w命令就是who命令的增强版,用于显示目前登入系统的用户信息,执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序,单独执行w指令会显示所有的用户,您也可以指定用户名称,仅显示某位用户的相关信息

      bash的基础特性之一:

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

            ~]# history 

            查看历史命令

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

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

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

                    .bash_history

                HISTFILESIZE:历史命令文件的大小

            命令用法:

              history [-c] [-d 偏移量] [n]

              或 history -anrw [文件名]

              或 history -ps 参数 [参数...]

              -c:删除所有history所有命令历史

              -d offset: 删除指定命令历史

              -r:从文件读取命令历史至历史列表中

              -w:把历史列表中的命令追加至历史文件中

              history n:显示最近的n条命令

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

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

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

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

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

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

              快捷键:ESC,(逗号代表松开).

              字符串:command !$

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

              环境变量:HISTCONTROL

                ignoredups:忽略重复的命令

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

                ignoreboth:以上两者同时生效

              修改变量的值:

                NAME='VALUE'

    Linux基础知识 

     bash的基础特性:

          命令行补全功能:

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

            命令查找机制:

              查找内部命令

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

            给定的打头字符串如果能唯一标识某命令程序文件,则直接补全

                      不能唯一标识某命令程序文件,再击tab键一次,会给出列表

            路径补全:

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

                tab:

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

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

      目录管理类的命令:

          mkdir:make directory

            mkdir [OPTION]... DIRECTORY...

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

              -v:verbose,显示详细过程

              -m MODE:直接给定创建目录的权限

              注意:路径基名方为命令的作用对象,基名之前的路径必须得存在

              

          rmdir:remove directoryies  仅能删除空目录

            rmdir [OPTION]... DIRECTORY...

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

            -v:显示命令执行过程

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

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

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

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

          问题一:如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?

              mkdir -pv /tmp/x/{y1/{a,b},y2}

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

              [root@localhost tmp]# mkdir  -v  {a,b}_{c,d}

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

             

    [root@localhost tmp]# tree /tmp/mysysroot/
    /tmp/mysysroot/
    ├── bin
    ├── etc
    │   └── sysconfig
    │   └── network-scripts
    ├── sbin
    ├── usr
    │   ├── bin
    │   ├── lib
    │   ├── lib64
    │   ├── local
    │   │   ├── bin
    │   │   ├── etc
    │   │   ├── lib
    │   │   └── sbin
    │   └── sbin
    └── var
    ├── cache
    ├── log
    └── run

    19 directories, 0 files

    mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/networkscripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}

      tree命令:查看目录结构

         tree [options] [diretory]

         -L level:指定要显示的层级

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

        命令执行的状态结果:

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

            成功:0

            失败:1-255

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

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

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

        引用命令的执行结果:

          $(command)

          或`command`

      bash的基础特性:引用

        强引用:‘ ’

        弱引用:“ ”

        命令引用:` `

      bash的基础特性:快捷键

        Ctrl+a:跳转至命令行行首

        Ctrl+e:跳转至命令行行尾

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

        Ctrl+k:删除光标所在处至行尾之间的所有字符

        Ctrl+l:清屏,相当于clear

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

        分屏查看命令:more和less

        more命令:

           more FILE

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

        less命令:

           less FILE

        head命令:

          查看文件的前n行:

            head [options] FILE

              -n #:#代表指定的前多少行

              -#:和加-n选项一样

        tail命令:

           查看文件的后n行

            tail [options] FILE

              -n #:#代表指定的后多少行

              -#:和加-n选项一样

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

        stat命令:stat - display file or file system status 显示文件或文件系统的状态

          stat  FILE...

          文件:两类数据

            元数据:metadate

            数据:date

          时间戳:

            最近访问(access time):2018-12-27 11:05:22.616718714 +0800
            最近更改(modify time):2018-12-27 11:05:22.616718714 +0800
            最近改动(change time):2018-12-27 11:05:22.616718714 +0800

         touch命令:

            touch - change file timestamps

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

            -a:仅修改access time

            -m:仅修改modify time

            -t:STAMP

              use [[CC]YY]MMDDhhmm[.ss] instead of current time

            一般 -a和-m会和-t选项一块使用

              change time 是不能手动指定时间的

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

        cp命令:copy

          源文件:目标文件

          单源复制:cp [OPTION]... [-T] SOURCE DEST
          多源复制:cp [OPTION]... SOURCE... DIRECTORY
               cp [OPTION]... -t DIRECTORY SOURCE...

            单源复制:

              如果DEST(目标文件)不存在:

                则事先创建此文件,并复制源文件的数据流至DEST

              如果DEST存在:

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

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

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

              如果DEST不存在:错误

              如果DEST存在:

                如果DEST是非目录文件:错误

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

            常用选项:

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

              -f:强制覆盖目标文件

              -r,-R:递归复制目录

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

              -a:-dR --preserve=all,archive,用于实现归档,做备份

              --preserve=

                mode:权限

                ownership:属主和属组

                timestamps:时间戳

                context:安全标签

                xattr:扩展属性

                links:符号链接

                all:上述所有属性

          mv命令:move

            mv [OPTION]... [-T] SOURCE DEST
            mv [OPTION]... SOURCE... DIRECTORY
            mv [OPTION]... -t DIRECTORY SOURCE...

            常用选项:

              -i:交互式

              -f:force,强行覆盖

          r m命令:remove

            r m [OPTION]... FILE...

            常用选项:

              -i:interactive,交互式

              -f:force,强制删除

              -r:recursive,递归删除

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

                危险操作:rm -rf /*

            注意:所有不用的文件建议不要直接删除,而是移至某个专用目录

        变量:

          命名的内存空间

            变量类型:

              字符型

              数值型:

                精确数值、近似数值

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

              8:1000,0000 10000

              16:10000,0001 0000

            ASCII码:

          变量的赋值操作:

            name=tom

          

  • 相关阅读:
    我爱淘冲刺阶段站立会议每天任务2
    我爱淘冲刺阶段站立会议每天任务1
    大道至简-灵活的软件工程
    大道至简-实现,才是目的
    冲刺第二阶段工作总结06
    课堂练习-最低价购书方案
    构建之法阅读笔记04
    冲刺第二阶段工作总结05
    冲刺第二阶段工作总结04
    冲刺第二阶段工作总结03
  • 原文地址:https://www.cnblogs.com/self-discipline-xxc/p/10177013.html
Copyright © 2020-2023  润新知