这篇文章上次修改于 1705 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

Bash功能介绍

命令别名

alias          #查看系统当前所有的别名
  • 演示结果

    [root@Hyui-VM ~]# alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  • 定义新的别名和取消别名定义

    [root@Hyui-VM ~]# alias h5='head -5'  #定义
    unalias h5  #取消定义

    管道与重定向

  • Linux中的重定向符有: <、>、<<、>>、| 以用来定义输入与输出
  • 管道使用示例

    [root@Hyui-VM ~]# rpm -qa | grep python2  #查询系统中是否安装了python2软件
    [root@Hyui-VM ~]# python2-rpm-macros-3-32.el7.noarch
  • 重定向使用示例

  • 2 3
    [root@Hyui-VM ~]# ls > list #将输出保存到list文件中,当前屏幕无输出 使用>符号的重定向会覆盖文件内容
    [root@Hyui-VM ~]# echo "root" >> list #将root添加到list文件末尾 使用>>符号的重定向会增加到文件末尾
    [root@Hyui-VM ~]# ls -la abc list #输出当前目录的abc文件和list文件
    ls: cannot access abc: No such file or directory #发现没有abc这个文件
    -rw-r--r-- 1 root root 16 Feb 12 10:42 list

    应对错误信息的重定向可以用2>和2>>

    [root@Hyui-VM ~]# ls -la abc list 2> error #仅仅只将错误重定向,不影响正常的输出
    -rw-r--r-- 1 root root 16 Feb 12 10:42 list #正常的输出
    [root@Hyui-VM ~]# ls -la abc list > all 2>&1 #标准输出与错误输出全导入到all文件
    [root@Hyui-VM ~]# ls -la abc list >> all 2>&1 #标准输出与错误输出全导入到all文件的末尾
    [root@Hyui-VM ~]# ls -la abc list &> all #标准输出与错误输入均导入至all文件

    # Bash使用技巧
    ## 命令序列使用

Linux中控制命令执行方式的控制字符: ;、&&、||、&

  • [&]控制符使命令开启一个子Shell,并在后台执行
  • [;]控制符可以把多个命令结合,但是多个命令之间不存在逻辑关系,只按照顺序执行
  • [&&]控制符可以将多个命令组合,只有前一个命令执行成功才会执行&&控制符后面的命令
  • [||]控制符与[&&]相反,只有前一个命令执行失败才会执行||后的命令

    [root@Hyui-VM ~]# firefox  #firefox浏览器通过图形界面启动,当前Shell无法使用
    [root@Hyui-VM ~]# firefox &  #后台运行firefox,不影响当前Shell使用
    [root@Hyui-VM ~]# ls / ; ls /etc ; ls /root  #不管命令是否错误,都会按顺序执行
    [root@Hyui-VM ~]# ls list && cat list  #只有list文件存在才会运行查看list内容的命令
    [root@Hyui-VM ~]# cat log || cat list  #只有当前目录中没有log文件的时候才会显示list文件的内容

    /dev/null的使用

  • Linux提供了一个特殊的设备/dev/null,任何东西往里写入都会永远消失。
  • 举例

    [root@Hyui-VM ~]# id hyui 2> /dev/null  #当前系统没有hyui用户,输出的错误信息会重定向到/dev/null并消失

    作业控制

    [root@Hyui-VM ~]# firefox &  ##我们当前在后台运行了firefox
    [root@Hyui-VM ~]# jobs  
    [1]+  Running       firefox &
    [root@Hyui-VM ~]# fg 1  #将firefox调回前台执行

    花括号使用技巧

  • 2 3
    [root@Hyui-VM ~]# echo file{1,2,3}
    file1 file2 file3
    [root@Hyui-VM ~]# echo {1..10}
  • 2 3 4 5 6 7 8 9 10
    [root@Hyui-VM ~]# echo num{3..-3}
    num3 num2 num1 num0 num-1 num-2 num-3
    [root@Hyui-VM ~]# touch ./file{1,2,3}
    [root@Hyui-VM ~]# ls -ld ./file{1,2,3}
    -rw-r--r-- 1 root root 0 Feb 12 11:34 ./file1
    -rw-r--r-- 1 root root 0 Feb 12 11:34 ./file2
    -rw-r--r-- 1 root root 0 Feb 12 11:34 ./file3