码迷,mamicode.com
首页 > 系统相关 > 详细

菜鸟的linux成长日记-bash基础特性2

时间:2018-08-25 20:01:22      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:doc   管理   范围   匹配   tab   执行   bash   pac   moni   

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) 用于任意长度的的任意字符 例如ab和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

标签:doc   管理   范围   匹配   tab   执行   bash   pac   moni   

原文地址:http://blog.51cto.com/13509526/2164333

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!