输入输出重定向和管道

  • 输入输出重定向:

     在linux中,标准的输入:键盘,用0表示;标准的输出:显示器,用1表示;标准的错误输出:显示器,用2表示;

     重定向:

         输出重定向用“>”表示,追加输出重定向用“>>”表示;

         输入重定向用“<”表示,追加输入重定向不用“<<”表示;

         错误输出重定向用“2>”表示,追加错误输出重定向用“2>>”表示;

         整合错误输出和标准输出的数据流到同一个文件中,用“&>”表示;

         如果用数字表示的话,将错误输出重定向到标准输出上,可以表示如下形式:2>&1;

     如下例子实现暂时关闭覆盖输出重定向,并随时使用覆盖输出重定向:

      说明:1、# set -C 禁止使用覆盖输出重定向功能,事先确定/tmp/test.out文件非空,此命令才起作用。

            2、# date >| /tmp/test.out,此时临时允许使用覆盖输出重定向功能。

            3、所以,# set  +C 打开覆盖输出重定向功能。

      set命令:用于打开或者关闭shell的某种功能。

  • 命令执行结束后,都有一个退出码:

            1、成功执行,返回值为0;

            2、错误执行,返回值为1-255;

            3、使用echo $? ,获取上一个命令的退出码。

  • /dev/null,位桶,相当于一个黑洞,将所有定向为它的数据统统吞噬掉。
  • 输入重定向的作用:

1、# cat < /etc/profile ,将/etc/profile 文件的内容给cat予以显示。但此时的<可以省略掉。

2、tr命令中的< 不可以省略掉。例如:# tr 'a-z' 'A-Z' < /etc/profile ,将/etc/profile文件的内容给tr命令,并使其修改其显示形式,而后显示出来。

   mail命令中的<不可以省略掉。例如:# mail redhat < /etc/profile ,即将/etc/profile 文件的内容作为邮件的正文发送给redhat用户。

  • <<的作用:

         echo -e "First line.\nSecond line." > /tmp/out ,使用echo命令生成一篇文档,并输入到/tmp/out文件中去。也可以使用如下方法代替:

         cat > /tmp/out << END ,表示使用cat命令在此生成一个文档,当遇到END结束符时,该文档结束,并被保存在/tmp/out文件里。注:END是可以替换成其他的字符的,并且大小写都可以。

  • 管道,用|表示:把前一个命令的输出当做后一个命令的输入。可以完成这样的任务:连接多个小程序完成复杂任务。
  • tee :从标准输入读取数据到标准输出中,并保存在文件中。

          例如:ls /var | tee /tmp/var.out,将目录/var下面的所有文件保存到/tmp/var.out中,并显示到屏幕上。

          也可以使用tee -a 表示追加输入重定向。