美文网首页
Linux 命令分类_bash基础特性

Linux 命令分类_bash基础特性

作者: 咯小屋 | 来源:发表于2017-10-17 15:54 被阅读0次

    1.历史命令

        history

                     在内存中缓存当前终端使用过的命令,

                     与其相关的几个环境变量的配置:

                                HISTSIZE    :在内存中缓存命令的个数(history 中命令的个数)

                                HISTFILE    :  存在历史命令的文件(~/.bash_history,存放命令的文件)

                                HISTFILESIZE:  命令历史文件中存放命令的个数(~/.bash_history存放命令个数)


                                 history 10      显示最近的10条记录

                                 history -a  手动追加当前的历史命令到记录文件         

         hisroty命令的加载和~/.bash_history命令是怎么记录的?

         调用历史中的命令:

                             !#: 重复执行第#条指令;

                             !!: 重复执行上一条命令

                             !string  :重复执行与string匹配的最近一条命令

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

                                !$:

                                ESC, .

                                 Alt+.

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

                              环境变量:HISTCONTROL

                                            ignoredups:忽略重复的命令;连续且相 同方为“重复”;

                                             ignorespace:忽略所有以空白开头的命令;

                                             ignoreboth:ignoredups, ignorespace;

                               修改环境变量值的方式:export 变量名="值"

                                            变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;

    2.命令补全

                          bash命令执行:

                                      内部命令:

                                      外部命令:bash根据PATH定义的路径,自左向右在每个路径下搜索以给定命令开头的文件,第一次找到即为要执行的命令;

                                     TAB补全:使用Tab键,补全用户给定字符串开头的命令,只有一条命令的时候直接补全,有多条的时候,再次点击Tab,则给提示所有相符的命令

    3.路径补全

    路径补全

               把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名;

              如果惟一:则直接补全;

               否则:再次Tab,给出列表;

    4.命令行展开

                   ~:当前用户的家目录

                   ~USERNAME:  给定用户的家目录

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

                   /tmp/{a,b}  = /tmp/a  ,  /tmp/b

    5.命令执行状态

    成功

    失败

    bash使用特殊变量$?保存最近一条命令的执行状态结果:

    0:成功

    1-255:失败

    程序执行有两类结果:

    程序的返回值;

    程序的执行状态结果;

    6.别名

       1.命令别名 -alias

             通过alias命令实现

              (1)查看当前shell进程中可以使用的全部别名  alias

                 (2) alias  NAME = VALUE 定以别名,仅对当前shell或子shell有效

                  永久有效的命令,需要在配置文件中配置

                      (1)对当前用户有效   ~/.bashrc

                         (2) 对所有用户有效   /etc/bashrc (不是所有系统都一样)

                  NOTE:

                              编辑配置文件后不是立即生效,如果想立即生效,需要重新读取配置文件

                              source  /path/to/file

                              .   /path/to/file

            撤销别名 unalias

                          unalias [-a] NAME [NAME...]

                   NOTE:

                              别名和原来的名称相同,如果想要执行原来的命令,使用:"/COMMAND"


    7.glob (globbing)

           bash中实现文件名”通配“

           通配符: *   ?  [ ] 

            (1)  *    任意数量的字符   :  0+

                             a*b    a-b之间可以任意数量的字符,可以没有,也可以很多个

           (2)? 任意单个字符   : 1

                            a?b    a-b之间有且一个字符

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

                      [0-9] :  0-9之间任意单个字符

                      [a-z]:不区分字符大小写 

              (4) [^]  匹配指定范围之外的任意单个字符 : 指定范围之外 1

                      [^0-9]   0-9之外的字符

                     [^a-z]    非大写和小写字母字符

            专用字符集合:(使用的时候需要外加 '[ ]')

                          [:digit:]:任意数字,相当于0-9

                          [:lower:]:任意小写字母

                          [:upper:]: 任意大写字母

                           [:alpha:]: 任意大小写字母

                            [:alnum:]:任意数字或字母

                             [:space:]:

                             [:punct:]:标点符号

    练习:

    1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;

    # ls -d /var/l*[0-9]*[[:lower:]]

    2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;

    # ls -d /etc/[0-9]*[^0-9]

    3、显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;

    # ls /etc/[^[:alpha:]][[:alpha:]]*

    4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/mageedu目录中;

    # cp -a /etc/m*[^0-9] /tmp/mageedu

    5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/magedu.com目录中;

    # cp -a /etc/*.d /tmp/magedu.com

    6、复制/etc目录下,所以有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/mageedu.com目录中;

    # cp -a /etc/[mnrp]*.conf  /tmp/mageedu.com


    8、bash的快捷键

                        Ctrl+l: 清屏,相当于clear命令;

                        Ctrl+a:跳转至命令开始处;

                         Ctrl+e:跳转至命令结尾处;

                          Ctrl+c:取消命令的执行;

                          Ctrl+u: 删除命令行首至光村所在处的所有内容;

                          Ctrl+k: 删除光标所在处至命令行尾部的所有内容;


    9、bash的的I/O重定向及管道

                               为了更好理解,我新建了一篇文章。

    相关文章

      网友评论

          本文标题:Linux 命令分类_bash基础特性

          本文链接:https://www.haomeiwen.com/subject/bmkduxtx.html