zoukankan      html  css  js  c++  java
  • 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'

  • 相关阅读:
    并发与多线程
    java多线程--死锁
    java变量
    StringStringBufferStringBuilder区别
    java8新特性
    spring自动装配和通过java实现装配
    CSP -- 运营商内容劫持(广告)的终结者
    【Composer】实战操作二:自己创建composer包并提交
    【个人重点】开发中应该重视的几点
    【Composer】实战操作一:使用库
  • 原文地址:https://www.cnblogs.com/self-discipline-xxc/p/10264145.html
Copyright © 2011-2022 走看看