在shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名:
文件&文件描述符
-
输入文件—标准输入
0(缺省是键盘,为0时是文件或者其他命令的输出) -
输出文件—标准输出
1(缺省是屏幕,为1时是文件) -
错误输出文件—标准错误
2(缺省是屏幕,为2时是文件) -
系统中实际上有12个文件描述符,我们可以任意使用文件描述符3到9.
文件重定向:改变程序运行的输入来源和输出地点
- 输出重定向:
Command > filename
把标准输出重定向到一个新文件中
Command >> filename
把标准输出重定向到一个文件中(追加)
Command > filename
把标准输出重定向到一个文件中
Command > filename 2>&1
把标准输出和错误一起重定向到一个文件中
可以把2>&1理解为一个参数(2&1),为了转义,&前加>
Command 2 > filename
把标准错误重定向到一个文件中
Command 2 >> filename
把标准输出重定向到一个文件中(追加)
Command >> filename2>&1
把标准输出和错误一起重定向到一个文件(追加)
- 输入重定向:
Command < filename > filename2
Command命令以filename文件作为标准输入,以filename2文件作为标准输出
Command < filename
Command命令以filename文件作为标准输入
Command << delimiter
从标准输入中读入,直到遇到delimiter分界符
绑定重定向
Command >&m
把标准输出重定向到文件描述符m中
Command < &-
关闭标准输入
Command 0>&-
同上
shell重定向的一些常用用法
- 重定向标准错误
例子1:command 2> /dev/null如果command执行出错,将错误的信息重定向到空设备
例子2:command > out.put 2>&1将command执行的标准输出和标准错误重定向到out.put(也就是说不管command执行正确还是错误,输出都打印到out.put)。 - 一般因为单元测试耗时时间长,我会选择把测试过程后台运行,并把结果放在一个特定的文件中
例如: nosetests tests/test_sys.py -v > ../nosetest.txt 2>&1
只需要回头看那个文件结果即可
参考:
http://zqwt.012.blog.163.com/blog/static/1204468420103272857116/
http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html
http://blog.csdn.net/flowingflying/article/details/5201199
网友评论