1.如果在任何命令的后面加上一个>和文件名(不一定事先存在),那么这个命令的执行结果就被送至该文件中。如:
$ls /usr/bin > ~/unknown
如果该文件已经存在,则ls命令的输出结果将会覆盖原来的文件内容。如果用csh和tcsh型的shell,可用下列方法避免覆盖,
$set noclobber
在bash下,可用下列命令避免覆盖,
$noclobber=1 (不一定是1,其他数值也可以)
2.可以用>>将命令的结果附加到文件的末尾,如
$ls /usr/bin >> ~/unknown
UNIX的程序都有两种输出,第一种输出叫做标准输出,第二种输出叫标准错误输出。而是用>不会重定向标准错误输出,解决办法是在后面加上&,如
$g++ maomao.cc >& error
这行命令会将g++编译器发出的信息放在error文件里。在bash中稍有不同,
$g++ maomao.cc &> error
3.只存储错误信息
$g++ maomao.cc 2> error
shell很专制的将1指定给标准输出,将2指定给标准错误输出。以上命令,只会存储标准错误。
4.抛弃标准输出,将其重定向到/dev/null的特殊文件中,类似数据黑洞
$g++ maomao.cc 2> error > /dev/null
以上命令存储标准错误,但会遗弃标准输出。
5.一个程序的输出为另一个程序的输入
如,
$du > du_output
$sort -n du_output
6.管道“|”
$du | sort -n
shell命令会把du命令的结果送到sort程序中
上面的例子中,du是显示硬盘使用状况的命令,sort是排序\
$du > sort -rn | more
原文地址:http://my.oschina.net/u/1464794/blog/293610