在命令行里 > /dev/null 2>&1 是什么意思?

时间:2022-09-17 16:36:22
sprintf(cmd, "updateone %s /etc/sysmaintenance.ck > /dev/null 2>&1", "/tmp/conf");谁告诉我这句话是什么呀?特别是  > /dev/null 2>&1 ,能详细解答一下吗?项目里好多地方用到这个!小弟万分感谢

8 个解决方案

#1


把标准输出了标准出错都重定向到/dev/null,就是空设备。可以看本shell编程的书,里面都会讲到。

#2


> /dev/null 将输出重定向到/dev/null,这是个空设备,也就是忽略其输出。 
2>&1  是将错误输出到标准输出,如果在控制台调试,也就是屏幕上,方便调试。
有3个默认的i/o,0是标准输入,一般是键盘;1是标准输出,一般是屏幕了;2是标准错误。

#3


谢谢上面2位朋友的讲解,略知一二了

#4


还有一个问题:updateone 这个命令是什么意思呢?

#5


updateone 应该是程序里下一步要执行的命令,不是Linux中的标准命令,可用能是自己写的。

程序下面一句应该是system(cmd); 执行cmd。

#6


那为什么不是 "2 > 1",而是 "2 > &1",谁能讲讲第一种写法错在哪了

#7


to cky41(有点魄力) :
& 一般好像是说后台运行,但是这里。。。。不清楚
可能是固定写法?

#8


也就是说2 > 1写法没错喽
明天去试试

如果是后台运行好像应该是2 > 1 &

#1


把标准输出了标准出错都重定向到/dev/null,就是空设备。可以看本shell编程的书,里面都会讲到。

#2


> /dev/null 将输出重定向到/dev/null,这是个空设备,也就是忽略其输出。 
2>&1  是将错误输出到标准输出,如果在控制台调试,也就是屏幕上,方便调试。
有3个默认的i/o,0是标准输入,一般是键盘;1是标准输出,一般是屏幕了;2是标准错误。

#3


谢谢上面2位朋友的讲解,略知一二了

#4


还有一个问题:updateone 这个命令是什么意思呢?

#5


updateone 应该是程序里下一步要执行的命令,不是Linux中的标准命令,可用能是自己写的。

程序下面一句应该是system(cmd); 执行cmd。

#6


那为什么不是 "2 > 1",而是 "2 > &1",谁能讲讲第一种写法错在哪了

#7


to cky41(有点魄力) :
& 一般好像是说后台运行,但是这里。。。。不清楚
可能是固定写法?

#8


也就是说2 > 1写法没错喽
明天去试试

如果是后台运行好像应该是2 > 1 &