Bash功能介绍

命令别名

alias          #查看系统当前所有的别名
  • 演示结果
[[email protected] ~]# 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'
  • 定义新的别名和取消别名定义
[[email protected] ~]# alias h5='head -5'  #定义
unalias h5  #取消定义

管道与重定向

  • Linux中的重定向符有: <、>、<<、>>、| 以用来定义输入与输出
  • 管道使用示例
[[email protected] ~]# rpm -qa | grep python2  #查询系统中是否安装了python2软件
[[email protected] ~]# python2-rpm-macros-3-32.el7.noarch
  • 重定向使用示例
[[email protected] ~]# ls  #查看当前文件列表
1  2  3
[[email protected] ~]# ls > list  #将输出保存到list文件中,当前屏幕无输出 使用>符号的重定向会覆盖文件内容
[[email protected] ~]# echo "root" >> list  #将root添加到list文件末尾 使用>>符号的重定向会增加到文件末尾
[[email protected] ~]# 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>>
[[email protected] ~]# ls -la abc list 2> error  #仅仅只将错误重定向,不影响正常的输出
-rw-r--r-- 1 root root 16 Feb 12 10:42 list  #正常的输出
[[email protected] ~]# ls -la abc list > all 2>&1  #标准输出与错误输出全导入到all文件
[[email protected] ~]# ls -la abc list >> all 2>&1  #标准输出与错误输出全导入到all文件的末尾
[[email protected] ~]# ls -la abc list &> all  #标准输出与错误输入均导入至all文件

Bash使用技巧

命令序列使用

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

  • [&]控制符使命令开启一个子Shell,并在后台执行
  • [;]控制符可以把多个命令结合,但是多个命令之间不存在逻辑关系,只按照顺序执行
  • [&&]控制符可以将多个命令组合,只有前一个命令执行成功才会执行&&控制符后面的命令
  • [||]控制符与[&&]相反,只有前一个命令执行失败才会执行||后的命令
[[email protected] ~]# firefox  #firefox浏览器通过图形界面启动,当前Shell无法使用
[[email protected] ~]# firefox &  #后台运行firefox,不影响当前Shell使用
[[email protected] ~]# ls / ; ls /etc ; ls /root  #不管命令是否错误,都会按顺序执行
[[email protected] ~]# ls list && cat list  #只有list文件存在才会运行查看list内容的命令
[[email protected] ~]# cat log || cat list  #只有当前目录中没有log文件的时候才会显示list文件的内容

/dev/null的使用

  • Linux提供了一个特殊的设备/dev/null,任何东西往里写入都会永远消失。
  • 举例
[[email protected] ~]# id hyui 2> /dev/null  #当前系统没有hyui用户,输出的错误信息会重定向到/dev/null并消失

作业控制

[[email protected] ~]# firefox &  ##我们当前在后台运行了firefox
[[email protected] ~]# jobs  
[1]+  Running       firefox &
[[email protected] ~]# fg 1  #将firefox调回前台执行

花括号使用技巧

[[email protected] ~]# echo {1,2,3}
1 2 3
[[email protected] ~]# echo file{1,2,3}
file1 file2 file3
[[email protected] ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[[email protected] ~]# echo num{3..-3}
num3 num2 num1 num0 num-1 num-2 num-3
[[email protected] ~]# touch ./file{1,2,3}
[[email protected] ~]# 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