1 和 2 在 Linux 中代表什么在Linux系统中0 1 2是一个文件描述符 从上表看的出来,我们平时使用的
其实也可以写成 echo 'hello' 1> t.log 关于2>&1的含义关于输入/输出重定向本文就不细说了
为什么2>&1要放在后面考虑如下一条shell命令
(最后一个&表示把条命令放到后台执行,不是本文重点,不懂的可以自行Google) 为什么2>&1一定要写到>log后面,才表示标准错误输出和标准输出都定向到log中? 我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的: 本来1----->屏幕 (1指向屏幕) nohup java -jar app.jar 2>&1 >log &
所以这就不是我们想要的结果。 简单做个试验测试下上面的想法: java代码如下: public class Htest { javac编译后运行下面指令:
你会在终端上看到只输出了'error1',log文件中则只有'out1' 每次都写'>log 2>&1'太麻烦,能简写吗?有以下两种简写方式 &>log 比如上面小节中的写法就可以简写为:
上面两种方式都和'>log 2>&1'一个语义。 那么 上面两种方式中&>和>&有区别吗? 语义上是没有任何区别的,但是第一中方式是最佳选择,一般使用第一种。 |
|