Linux 多命令协作:管道及重定向

  一.管道及重定向的理解

     在Linux系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现和一个或几个简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。

     Linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI下),而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能。

     Linux命令行为为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。

 二.命令行shell的数据流定义

     

 名称  说明  编号  默认
 STDIN  标准输入  0  键盘
 STDOUT  标准输出  1  终端
 STDERR  标准错误  2  终端

      命令通过STDIN接受参数或数据,命令通过STDOUT输出结果或通过STDERR输出错误

 三.通过管道和重定向,我们可以控制CLI的数据流

 分类  关键字  定义  例子
 重定向  >  将STDOUT重定向到文件(覆盖:如果
目标文件不存在,则创建并添加标准
信息,存在则覆盖其中的内容)
 echo "Hello Haige" >outfile
 ls > outfile
   >>  将STDOUT重定向到文件(追加:
只能重定向标准输出信息,
错误信息进不来)
 echo "Hello Haige" >>outfile
 date >> outfile
   2>  将STDERR重定向到文件(覆盖,没有
错误不输出)
 ls note 2> errorout
   2>&|  将STDERR与STDOUT结合  ls note 2>&| alloutput
   <  重定向STDIN   grep haiyun < /etc/passwd
 管道  |  将一个命令的STDOUT作为另一个命令的STDIN   find / -user hadoop | grep haige

Linux 多命令协作:管道及重定向

Linux 多命令协作:管道及重定向


Linux 多命令协作:管道及重定向


Linux 多命令协作:管道及重定向


Linux 多命令协作:管道及重定向


  四.总结

     1.管道通常用来组合不同的命令,以实现一个复杂的功能

     2.重定向通常用来保存某命令的输出信息或错误信息,可以用来记录执行结果或保存错误信息到一个指定的文件