经常在Linux环境中,在执行一些脚本,尤其是在定义一些定时任务时,在crontab调用中经常发现如下形式:
/tmp/test.sh > /tmp/test.log 2>&1
前半部分/tmp/test.sh > /tmp/test.log 很容易理解,即就是将test.sh脚本执行的结果,生成到后面的文件中,会覆盖源文件中的内容。
还有一种用途是直接输入>a.txt,表示直接生成一个空白文件,相当于touch命令。
1、>
直接把内容生成到指定文件,会覆盖源文件中的内容。
2、>>
尾部追加,不会覆盖掉文件中原有的内容,相当于append
3、2>&1
先介绍下几个基本符号及其含义
/dev/null:表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
从command>/dev/null 说起:
其实这条命令是一个缩写版,对于一个重定向命令,肯定是a > b这种形式,那么command > /dev/null难道是command充当a的角色,/dev/null充当b的角色。这样看起来比较合理,其实一条命令肯定是充当不了a,肯定是command执行产生的输出来充