hax*_*ode 11 unix linux bash shell
我正在阅读重定向数据/dev/null,所以我尝试了一个简单的测试:
ping a.b.c # which results in an address not found
Run Code Online (Sandbox Code Playgroud)
如果我试试这个:
ping a.b.c > /dev/null # prints the same error message as the one above
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做:
ping a.b.c > /dev/null 2>&1 # The error message is gone
Run Code Online (Sandbox Code Playgroud)
最后的解决方案是理想的解决方案,但是发生了2>&1什么?到目前为止,我的研究表明,2代表stderr和1代表stdout.因此,如果我以这种方式阅读,看起来我正在创建一个stderr文件并重定向stdout到它?
如果是这种情况,&该命令的作用是什么?
msb*_*msb 12
你是对的,2是STDERR,1是的STDOUT.当你这样做时,2>&1你会说:"打印到STDOUT(1)将要去的东西STDERR(2)".在那之前,你说你STDOUT会去/dev/null.因此,没有看到任何东西.在示例1和2中,您将获得输出消息,因为它正在打印STDERR,因为常规重定向仅重定向STDOUT.
当你进行重定向时,你没有创建一个STDERR,进程总是有一个STDERR和一个STDOUT创建时.