当Linux执行一个程序时,会自动打开三个流:
标准输入
:0 (默认是键盘)
标准输出
:1(默认是屏幕)
标准错误
:2(默认是屏幕)
>
重新定向
比如现有文件a.log
文本内容为:this is a.log
当我们执行命令cat a.log
时,系统默认将其输出到标准输出也就是屏幕
,通过符号>
我们可以将其输出重定向到另一个文本里:
cat a.log > copya.log
此时我们可以看到copya.log里的文本内容为:this is a.log
事实上,上述命令实际是 cat a.log 1> copya.log
的缩写,表示把命令cat a.log
的标志输出重定向到copya.log
注意1>
是紧挨着的 不能分开写
同样,如果想把标准错误重定向到另一个文件里可以如下操作:
cat notexist.log 2> err.log
因为notexist.log
不存在,直接执行cat notexist.log报错如下:
cat: notexist.log: No such file or directory
我们打开err.log
会发现内容和上面一样,表示把命令的cat: notexist.log
的标志错误输入到err.log
里面了
crontab
里常见的配置command >/dev/null 2>&1
的含义
>
等价于 1>
也就是代表命令的标准输出
/dev/null
可以看作黑洞
,等价于一个只写文件。所有写入它的内容都会永远丢失,尝试从它那儿读取内容则什么也读不到。
2
表示stderr标准错误
&
表示等同于的意思,2>&1
,表示2的输出重定向等同于1
网友评论