最近在学《Unix环境高级编程》,发现里面很多小程序在shell中运行时执行的命令看不太懂,所以复习了下Linux的重定向,这篇是查看了其他人的博客写的,具体哪篇忘记了。。。


作用:引用百度百科上的

主要是用来修改默认的一些东西,对原来系统命令的默认执行方式进行改变


比如我们在shell中执行程序时,一般都会将结果直接输出到屏幕上,有时候输出信息太多了(把shell滚到顶都看不到完整的信息)或者想把输出结果简单的保存到文件(当然你可以在程序中加入写文件函数)时,就会用到重定向的功能;


在shell中执行命令时,它的默认输入就是键盘,默认输出就是屏幕。


最基本的就是输入输出重定向了:


  • >:输出重定向,将命令的输出写入文件或者设备中,而不是句柄或者屏幕;格式:命令 > 文件名;

   下面把程序a.out的输出重定向到output.txt文件中

./a.out > output.txt



  • <:输入重定向,从给定的文件中读入数据作为命令的输入,不是从键盘或者句柄中读入;格式:命令 < 文件名

   下面从input.txt文件中读入数据作为a.out的输出

./a.out < input.txt



  • >>:将命令输出追加到给定的文件末尾,而不是覆盖文件;格式:命令 >> 文件名


上面重定向的输入输出是文件,此外,还可以是句柄;

>&:将一个句柄的输出写入到另一个句柄的输入中;

<&:从一个句柄中读入输入并写到另一个句柄的输出中