美文网首页linux 学习
linux bash的基础特性(2)

linux bash的基础特性(2)

作者: 极地冰凌_25bf | 来源:发表于2018-11-10 13:42 被阅读0次

    bash的基础特性(2)

    一. 命令的别名(alias)

    • alias可以将复杂的命令简化, 来提高工作的效率. 例如系统中默认将"ls -l"alias成了"ll".
    • 通过alias来管理命令
      • (1) alias:显示当前shell进程中所有可用的命令别名
          $ alias  
          alias l.='ls -d .* --color=auto'  
          alias ll='ls -l --color=auto'  
          alias ls='ls --color=auto'  
          alias vi='vim'  
          alias which='alias | /usr/bin/which --tty-only --read-alias
          --show-dot --show-tilde'
      
      • (2) alias NAME='VALUE'定义别名NAME, NAME就相当于NAME了
          $ alias cdnet='cd /etc/sysconfig/network-scripts'
          $ cdnet
          $ pwd
          /etc/sysconfig/network-scripts
          ```
      

    Note: 在命令行中定义的别名, 仅对当前shell进程有效, 要定义在配置文件中

    • 仅对当前用户有效: ~/.bashrc

    • 对所有用户有效: /etc/bashrc

      bash进程重新读取配置文件: source /path/to/config_file

    • 撤销别名(unalias)
      unalias [-a] name[name....]

        -a: 撤销所有别名
      

    Note: 如果别名同原命令的名称相同, 想要执行原命令, 可使用"\COMMAND"

    二. glob/globbing: 通配符

    glob在bash中用于实现文件名"通配"
    通配符: *, ?, []
    
    • (1) * 用于任意长度的的任意字符 例如a*b和aab,abb,acb,accccccb是一样的

          $ ls /etc/a*b 
          /etc/aliases.db  /etc/anacrontab
      
    • (2) ? 匹配任意单个字符 例如a?b和akb,a1b,acb是一样的

          $ ls -d Downloa?s
          Downloads
      
    • (3) [] 匹配指定范围内的任意单个字符 例如[a-z]

    • (4) [^] 匹配指定范围外的任意单个字符 例如[^0-9]表示除数字以外的任意字符

    专用字符合集:

    [:digit:] 任意数字,相当于0-9(实际用的时候要[[:digit:]]这样用)
    [:lower:] 任意小写字符
    [:upper:] 任意大写字符
    [:alpha:] 任意大小写字符
    [:alnum:] 任意数字或字母
    [:space:] 任意空格字符
    [:punct:] 标点符号
    [:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
    [:digit:]  [:graph:]  [:lower:]  [:print:]
    [:punct:]  [:space:]  [:upper:]  [:xdigit:]
    

    三. bash的快捷键

    • Ctrl+l: 清屏, 相当于clear
    • Ctrl+a: 将光标跳转至命令开始处
    • Ctrl+e: 跳转至命令结尾处
    • Ctrl+c: 取消命令执行
    • Ctrl+u: 删除命令行首至光标所在处的所有内容
    • Ctrl+k: 删除光标所在处至命令尾部的所有内容

    四. bash的I/O重定向及管道

    程序: 指令+数据
        读入数据: Input
        输出输入: Output
    
    打开的文件都有一个fd: file description(文件描述符)
    
    标准输入: keyboard, 0
    标准输出: monitor, 1
    标准错误输出: monitor, 2
    

    I/O重定向: 改变标准位置

    • 输出重定向: COMMAND > NEW_POSITION, COMMAND >> NEW_POSITION

      • >: 覆盖重定向, 目标文件中的原有内容会被清除

      • >>: 追加重定向, 新内容会追加到目标文件中

      • # set -C: 禁止将内容覆盖输出至已有文件中

          强制覆盖: >|  
        
      • # set +C: 允许将内容覆盖输出至已有文件中

      • 2>: 覆盖重定向错误输出数据流

      • 2>>: 追加重定向错误输出数据流

    • 将标准输出和错误输出各自定义向不同位置

        COMMAND > /path/to/file.out 2> /path/to/error.out
      
    • 合并标准输出和错误输出为同一数据流进行定向

      • &>: 覆盖重定向
      • &>>: 追加重定向
      • COMMAND > /path/to/file.out 2> &1
      • COMMAND >> /path/to/file.out 2>> &1
    • 输入重定向: <

    • HERE Documentation: <<

      $ cat << EOF
      > fdsfadfads
      > fdsfs
      > EOF
      fdsfadfads
      fdsfs
      
      • cat > /path/to/somefile << EOF: 输入字符以EOF结尾并输出至somefile
    • 管道(将前一个命令的结果作为后一个命令的参数)

        COMMAND1 | COMMAND2 | COMMAND3.....
      

    Note :最后一个命令会在当前shell的子进程中执行

    五. tee命令:

    tee [OPTION]... [FILE]...
        Copy standard input to each FILE, and also to standard output.
    

    相关文章

      网友评论

        本文标题:linux bash的基础特性(2)

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