shell命令笔记

来源:互联网 发布:Java opencv分割图片 编辑:程序博客网 时间:2024/05/23 00:22

shell 编程之2>&1
作者:NinGoo http://www.ningoo.net/html/2007/shell_scripts_stderr_stdout.html

1. 标准输入的控制
语法:命令 < 文件
说明:将文件做为命令的输入。
例如:
mail -s “mail test” test@163.com < file1 将文件file1 当做信件的内容,主题名称为mail test,送给收信人。

 

2. 标准输出的控制
语法:命令 > 文件
说明:将命令的执行结果送至指定的文件中。
例如:
ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。

 

语法:命令 >! 文件
说明:将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。
例如:
ls -lg >! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。

 

语法:命令 >& 文件
说明:将命令执行时屏幕上所产生的任何信息写入指定的文件中。
例如:
cc file1.c >& error 将编译file1.c 文件时所产生的任何信息写入文件error 中。

 

语法:命令 >> 文件
说明:将命令执行的结果附加到指定的文件中。
例如:
ls - lag >> list 将执行“ls - lag” 命令的结果附加到文件list 中。

 

语法:命令 >>& 文件
说明:将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
例如:
cc file2.c >>& error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。


实际上, > 就相当于 1 > 也就是重定向标准输出,不包括标准错误。通过2>&1,就将标准错误重定向到标准输出了,那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。如果只想重定向标准错误到文件中,则可以使用2 > file。

 

注意:
 1) 2 > 1的意思是将stderr重定向输出到名字为1的文件中了

 2) &1是引用stdout的文件句柄,也就是将stderr合并到stdout中去