Linux系统教程 标准输入/输出与重定向(2)

 $ wc<
  >this text forms the content
  
  >of the here document,which
  
  >continues until the end of
  
  >text delimter
  
  >delim
  
  4 17 98
  
  在<<操作符后面,任何字符都可以作为正文开始前的分隔符,本例中使用delim作为分隔符。here文档的正文一直延续到遇见另一个分隔符为止。第二个分隔符应出现在新行的开头。这时here文档的正文(不包括开始和结束的分隔符)将重新定向送给命令wc作为它的标准输入。
  
  由于大多数命令都以参数的形式在命令行上指定输入文件的文件名,所以输入重定向并不经常使用。尽管如此,当要使用一个不接受文件名作为输入参数的命令,而需要的输入内容又存在一个文件里时,就能用输入重定向解决问题。
  
  输出重定向
  
  输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。
  
  输出重定向比输入重定向更常用,很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,那么将输出重定向到一个文件中,然后再用文本编辑器打开这个文件,就可以查看输出信息;如果想保存一个命令的输出,也可以使用这种方法。还有,输出重定向可以用于把一个命令的输出当作另一个命令的输入(还有一种更简单的方法,就是使用管道,将在下面介绍)。
  
  输出重定向的一般形式为:命令>文件名。例如:
  
  $ ls > directory.out
  
  $ cat directory.out
  
  ch1.doc ch2.doc ch3.doc chimp config mail/ test/
  
  $
  
  将ls命令的输出保存为一个名为directory.out的文件。
  
  注:如果>符号后边的文件已存在,那么这个文件将被重写。
  
  为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容,shell提供了输出重定向的一种追加手段。输出追加重定向与输出重定向的功能非常相似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。
  
  如果要将一条命令的输出结果追加到指定文件的后面,可以使用追加重定向操作符>>。形式为:命令>>文件名。例如:
  
  $ ls *.doc>>directory.out
  
  $ cat directory.out
  
  ch1.doc ch2.doc ch3.doc chimp config mail/ test/
  
  ch1.doc ch2.doc ch3.doc
  
  $
  
  和程序的标准输出重定向一样,程序的错误输出也可以重新定向。使用符号2>(或追加符号2>>)表示对错误输出设备重定向。例如下面的命令:
  
  $ ls /usr/tmp 2> err.file
  
  可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备将来检查用。
  
  还可以使用另一个输出重定向操作符(&>)将标准输出和错误输出同时送到同一文件中。例如:
  
  $ ls /usr/tmp &> output.file
  
  利用重定向将命令组合在一起,可实现系统单个命令不能提供的新功能。例如使用下面的命令序列:
  
  $ ls /usr/bin > /tmp/dir
  
  $ wc ?w < /tmp/dir
  
  459
  
  统计了/usr/bin目录下的文件个数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f684d3e94fe7e3e83c6154b97bbd89be.html