5. bash的基础特性

Bash(GNU Bourne-Again Shell)是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell。

shell是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又叫做“胶水语言”

事实上,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的。Shell脚本对于管理系统任务和其它的重复工作的例程来说,表现的非常好,根本不需要那些华而不实的成熟紧凑的编译型程序语言。

 

bash的基础特性:

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

    ~]#  history:显示历史命令

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

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

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

      命令用法:

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

        或 history -anrw [文件名]

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

          -c 删除所有条目从而清空历史列表。

          -d 偏移量 从指定位置删除历史列表。

          -r 读取历史文件并将内容追加到历史列表中

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

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

    

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

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

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

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

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

  

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

      快捷键:ESC, .

      字符串:!$

 

  2.命令补全:

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

    命令查找机制:

      查找内部命令:

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

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

  3.路径补全:

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

      tab:

        如果能唯一标识,则直接补全,不能唯一标识某命令程序文件,再击tab健一次,会给出列表;

 

  4.命令执行的状态结果:

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

        成功:0

        失败:1-255

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

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

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

    引用命令的执行结果:

      $(COMMAND)

      或`COMMAND`

 

  5.引用

    强引用:' '

    弱引用:" "

    命令引用:` `

 

  6.快捷键

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

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

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

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

    Ctrl+l:清屏,相当于clear 

 

  7.globbing:文件名通配

    匹配模式:元字符

      *:匹配任意长度的任意字符

        例:*pa*:文件名中包含pa的所有文件

      ?:匹配任意单个字符

        例:pa?:pa后必须且只能有一个任意字符

      [ ]:匹配指定范围内的任意单个字符

        有几种特殊格式:

            [a-z],[A-Z],[0-9],[a-z0-9]

            [[:upper:]]:所有大写字母

            [[:lower:]]:所有小写字母

            [[:alpha:]]:所有字母

            [[:digit:]]:所有数字

            [[:alnum:]]:所有的字母和数字

            [[:space:]]:所有空白字符

            [[:punct:]]:所有标点符号

      [^]:匹配指定范围外的任意单个字符

          [^[:upper:]]:除大写字母外的单个字符

          [^a-z]:除a-z外的单个字符

          ........

    练习题:

      

  

  8.IO重定向及管理

    程序:指令+数据

    输出重定向:>

      特性:覆盖输出

      例:cat /etc/log/log1.txt > /home/log2.txt   把log1.txt文件中查看到的内容重定向到log2.txt文件中并把log2.txt中的数据覆盖,

        如果没有log2.txt文件则会创建名为log2.txt的文件并包含log1.txt内的数据;

    输出重定向:>>

      特性:追加输出,保留原文件数据

    set -c:禁止覆盖输出重定向至已存在的文件;

        此时可使用强制覆盖输出:>|

    set +c:关闭上述特性

    错误输出流重定向:2>,2>>

    合并正常输出流和错误输出流:&>,&>>

    输入重定向:<,<<

      <<:此处创建文档 ,把输入的内容创建成文件

    

 

        

    

      

  

        

 

 

  

  

  

 

 

      

        

posted @ 2021-07-05 16:25  -wei  阅读(81)  评论(0)    收藏  举报