首页 > 代码库 > 5、自学——Linux的学习进度与任务【shell中bash的特性】

5、自学——Linux的学习进度与任务【shell中bash的特性】

shell中bash的特性

shell中bash的特性

bash特性之一:命令行展开  

  把命令行的给定的一个特殊符号自动替换为别的字符串的机制

目录:

  命令:cd 【内置命令】  

      工作目录:当前所处的目录

      cd:change directory(切换目录)

      cd 目标路径(不能是一个文件必须是一个目录)

      所有从根起始的都是绝对路径:/文件名

      基名:路径最后一个文件的名字

       /x/y/z/m/n: 目标路径
       /x/y/z/m: 是目录名或者路径名

           两个命令:
          获取路径的基名:   # basename
          获取路径的目录名:# dirname

  注意: 文件名可以使用除/(路径分割符)以外的任意字符(空白符也是可以),但是不要使用特殊字符,且总长度不能超过255个
      严格区分大小写

 

  注意:~ 相当于 /home   

    如果要切换到根目录下的目录具体操作:# cd /USERNAME(可以是空文件或者目录)只有管理员可以此操作

  如果要切换到家目录具体操作:# cd  或者 # cd ~

  如果要切换到家目录下的目录具体操作:# cd ~USERNAME(可以是空文件或者目录)只有管理员可以此操作

  # cd -  返回上一次所在的目录

  # cd .  :  切换到当前目录

    # cd .. :切换到父目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思)

  # cd ../.. :切换上两级目录;

    # cd !$ 把上个命令的参数作为cd参数使用

  技术分享

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

       例如:

                 /tmp/{a,b,c}   /tmp/a /tmp/b /tmp/c

                    /tmp/{a,b}/z   /tmp/a/z /tmp/b/z

  # pwd:显示当前目录    print working directory
  # mkdir:创建目录 make directory
        -p: 先创建父目录
        -v:显示详细信息
 

  # rmdir:删除空目录  remove directory  

   技术分享

   技术分享

   技术分享

   技术分享

 

  命令:ls

  # ls : 查看文件(注意:在一个目录下的其他目录都是该目录的文件,一切皆文件

 

bash特性之二:shell的引用

      ‘‘强引用,变量替换不会进行
     "":弱引用,能够执行变量替换
      ``:命令引用(替换),引用命令的执行结果,命令替换的另外一符号:$(命令)

  变量替换:${变量名}
        # echo : 回显变量值

        技术分享


  命令引用

        技术分享

 

bash的特性之三:命令历史

      bash保存的过去曾经执行的命令的列表
     当前shell进程保存在缓冲区中
     缓冲区中的命令会在shell退出时保存至文件中,.bash_history
       使用上下箭头键可以翻看此前曾经执行过的命令

     history快捷方式:

        !#:     #为命令历史列表中的命令编号,可用执行第#条命令
        !!:      执行上一条命令(重复执行,执行过的命令)
        !-#:   执行命令历史列表中的倒数第#条命令
      !string:   执行命令历史列表中最近一次以string开头的命令
        !$:     引用上个命令的最后一个参数 先按ESC,再按.

      history常用选项:

                 -c :    清空列表

           -d# :   删除指定的历史命令

          -a  :    追加当前会话的命令历史到历史文件中

          -n  :    从历史文件中读取所有未被读取的行

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



      命令历史相关环境变量:

              HISTSIZE:命令历史中可以保存的命令的个数

              HISTFILE:命令历史文件

              HISTFILESIZE:命令历史文件可以保存的命令的个数

              HISTCONTROL:控制命令历史生成

                    ignoredups:忽略记录重复的命令,连续相同命令才为重复
                    ignorespace:不记录以空白字符开头的命令
                    ignoreboth:同时具有以上值的特性

      补充:Linux文件系统的另外一特性:以点号开头的文件为隐藏文件:# ls -a:才能查看隐藏文件
      # cat 查看文本文件内容

     shell中的变量赋值:
            变量名=值
              注意:变量在赋值时不能使用$,而$只在变量替换时使用
                 变量名只能包含字母,数字和下划线,而且不能以数字开头
                 变量名区别大小写:

 

bash的特性之四:命令别名(alias)

      alias :显示当前shell中定义的所有别名

      技术分享

        命名别名

          # alias 别名=‘原始命令‘(没有空格可以不加引号)

        撤销别名

         # unalias 别名

 

bash的特性之五:globbing, 文件名通配

    通配符:
      *:匹配任意长度的任意字符
        abc abb abm xab ab
        ab*
        *ab
        *ab*

      ?: 匹配任意单个字符(全文件名精确匹配)

      []: 匹配指定字符范围内的任意单个字符
        a[xyz]b:
        [a-z]
        [A-Z]
        [0-9]
          [0-9a-zA-Z] 默认情况下是不区分大小写

            [[:upper:]] = [A-Z] 所有大写字母

            [[:lower:]]    所有小写字母
            [[:alpha:]]    所有字母表
            [[:digit:]]      所有数字
            [[:alnum:]]     所有字母表+数字
            [[:space:]]    所有空白符
            [[:punct:]]    所有标点符号
            [^]:        匹配指定字符范围外的任意单个字符
            [^0-9]=[^[:digit:]]

   

  练习

      复制/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位数字的文件或目录至/tmp下

        l*[0-9]*[[:lower:]]

 

      1、复制/etc目录下以p开头,中间跟了任意字符,并以d结束的文件至/tmp目录中:
      2、复制/etc/目录下以p开头,中间跟了4个任意字符,并以d结尾的文件至/tmp/a目录中:如果a不存在,先创建出来
      3、复制/etc/目录下以任意一位数字开头,并以非数字结尾的文件至/tmp/b目录下
      4、复制/etc/目录下以非字母开头,后面跟了一个字母及其他任何长度字符的文件至/tmp/c目录中

      1、cp -r /etc/p*d/tmp
      2、cp -r/etc/p????d /tmp/a
      3、cp -r/etc/[0-9]*[^0-9]/tmp/b目录下
      4、cp -r/etc/[^[:alpha:]][[:aipha:]]*/tmp/c

5、自学——Linux的学习进度与任务【shell中bash的特性】