bash基础特性

bash的基础特性:

命令行展开:

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

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

globbing:文件名通配

    匹配模式:元字符

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

      ?:匹配任意单个字符

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

        有几种特殊格式:

          [a-z],[A-Z],[0-9],[a-z0-9],[abcxyz]仅匹配一个字符

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

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

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

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

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

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

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

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

        [^[:upper:]]

        [^0-9]

        [^[:alnum:]]

    练习1:显示/var目录下以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录

     ls -d /var/l?[[:lower:]]

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

    ls -d /etc/[0-9]*[^0-9] 或 ls -d /etc/[[:digit:]]*[^[:digit:]]

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

    ls -d /etc/[^a-z][a-z]* 或 ls -d /etc/[^[:alpha:]][[:alpha:]]*

    练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu,com目录

    cp -r /etc/m*[^0-9] /tmp/magedu.com/  

    cp -r /etc/m*[^[:digit:]] /tmp/magedu.com/

    练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下

    cp -r /usr/share/man/man[0-9] /tmp/man/

    cp -r /usr/share/man/man[[:digit:]] /tmp/man/

    练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d目录下

    cp -r /etc/[mnrp]*.conf /tmp/conf.d/

IO重定向及管道

  程序:指定+数据

    程序:IO

    可用于输入的设备:文件

      可以是键盘设备、文件系统上的常规文件、网卡等

    可用于输出的设备:文件

      可以是显示器、文件系统上的常规文件、网卡等

    程序的数据流有三种:

      输入的数据流:<-- 标准输入(stdinput),键盘

      输出的数据流:--> 标准输出(stdout),显示器

      错误输出流:--> 错误输出(stderr),显示器

    fd:file desciptor,文件描述符

      标准输入:0

      标准输出:1

      错误输出:2

  IO重定向:

    输出重定向:>

      特性:覆盖输出

    输出重定向:>>

      特性:追加输出

    # set -C 

      禁止覆盖输出重定向至已存在的文件

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

    # set +C

      关闭上述特性

    set -C 只对当前shell生效

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

    合并正常输出流和错误输出流:

      (1)&>,&>>

      (2)comman > /path/to/somefile 2>&1

          comman >> /path/to/somefile 2>&1

    特殊设备:/dev/null

    输入重定向:<

    tr命令:

      tr [OPTION]... SET1 [SET2]

        把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符

      用法1:

        tr SET1 SET2 < /PATH/FROM/SOMEFILE

      用法2:

        tr -d SET1 < /PATH/FROM/SOMEFILE

          -d:删除文件中你所指定的字符

      注意:不修改原文件,只打印到屏幕上

      <<:输出成文档

        cat << EOF

        cat > /PATH/TO/SOMEFILE << EOF

      

      tee命令:

        command | tee /PATH/TO/SOMEFILE

          能够将command结果输出到屏幕上并且可以保存到指定文件

      

 

     

      管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流

        command1 | command2 | command3 | ...

      

      练习1:把/etc/passwd文件的前六行的信息转换为大写字符后输出

      head -n 6 /etc/passwd | tr 'a-z' 'A-Z'

posted @ 2019-01-24 17:21  self-discipline-xxc  阅读(158)  评论(0编辑  收藏  举报