一直以来对shell并不是很熟悉,并且在报错日志的时候习惯的写 command >log.log 2>&1
今天一个同事看了我的shell脚本,问我 2>&1是什么意思,还真把我给难住了。
经过google了一番,有了个大概的了解:
shell的标准输入默认的是键盘,也可以试文件或者管道|
标准输出默认是终端同样也可以是文件或者管道
标准错误默认也是终端,可以试文件等
标准的输入、输出、和错误输出分别表示STDIN STDOUT STDERR 也可以用数字表示 0 1 2
有了以上的解释就明白了
command >log.log 2>&1
2> 代表的是标准输出的重定向
& 是等同于的意思
2>&1 意思是标准错误输出等同于标准输出
command >log.log 2>&1 也就是标准输出 和 标准错误输出 都输入到了log.log文件