一、简介
- 这里以
ls
命令进行举例。
$ ls
- 总结:
一个>
的是每次覆盖导出结果,两个>
的是在文件尾部追加导出结果。>
:导出成功结果,不支持导出失败结果。2>
:导出失败结果,不支持导出成功结果。$>
:支持导出上面两种结果,混合导出。 - 如何区分是否导出成功?
在屏幕上输出了就是导出失败,没有输出则导出成功。
二、详细案例
>
:将命令运行成功
结果导出到指定文件,只能导出成功
的结果,失败/错误
的结果无法导出。
$ ls > ls.txt
测试失败结果:ls.txt
里面是空的,导入失败。
>>
:将命令运行成功
结果导出追加
到指定文件尾部,只能导出成功
的结果,失败/错误
的结果无法导出。2>
:将命令运行失败/错误
结果导出到指定文件,只能导出失败/错误
的信息,成功
的结果无法导出。
测试成功结果:ls.txt
里面是空的,导入失败。
2>>
:将命令运行失败/错误
结果导出追加
到指定文件尾部,只能导出失败/错误
的信息,成功
的结果无法导出,截图案例就不贴了。
&>
:将命令运行成功/失败/错误
结果导出到指定文件,支持任何状态的结果导出。
三、进阶用法
- 组合使用,成功的导出到
ls.txt
,失败的导出到ls2.txt
。
$ ls ls.txt dzm.txt > ls.txt 2> ls2.txt
- 组合使用,成功的导出到
ls.txt
,失败的导出到ls.txt
。
1>
通常可以省略成>
,有了这些认识才能理解1>&2
和2>&1
。1>&2
正确返回值传递给2
输出通道&2
表示2
输出通道,如果此处错写成1>2
, 就表示把1
输出重定向到文件2
中。2>&1
错误返回值传递给1
输出通道,同样&1
表示1
输出通道。
$ ls ls.txt dzm.txt > ls.txt 2>&1