欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Linux下" >/dev/null 2>&1 "相关知识说明 2大于右尖括号与符号1 有大用 有大大用

在学习Linux的过程中,常会看到一些终端命令或者程序中有">/dev/null 2>&1 "出现,由于已经遇到了好几次了,为了理解清楚,不妨花点时间百度或者google一下相关的知识。

 /usr/local/bin/cvsb > /dev/null 2>&1  

在Linux命令中,>& 有着不同的含义和用途:

  1. > 是一个重定向操作符。当用于命令之后,它会将命令的标准输出(STDOUT,通常是命令执行成功后返回的信息)重定向到某个文件中,而不是打印在终端上。例如,command > file.txt 会将 command 执行的结果保存到 file.txt 文件中,覆盖文件原有内容。如果想要追加而不是覆盖,可以使用 >>,如 command >> file.txt

  2. & 有两个主要用途:

  • 当它用于命令的末尾,如 command &,这意味着该命令将在后台运行,允许你在终端继续输入其他命令而不等待当前命令执行完成。这对于需要长时间运行且不需要用户交互的进程特别有用。

  • 在重定向语境中,如 2>&1,这里的 & 不是后台运行的意思,而是文件描述符的引用方式。这里表示将标准错误(STDERR,命令执行过程中产生的错误信息)重定向到与标准输出相同的地方。具体来说,2 指的是标准错误的文件描述符,1 是标准输出的文件描述符。所以 2>&1 的意思是把所有错误信息也导向到标准输出指定的地方。结合前面提到的 >,如果一个命令写作 command > /dev/null 2>&1,这意味着无论命令的正常输出还是错误输出,都将被丢弃(因为 /dev/null 是一个特殊的设备文件,任何写入它的数据都会被丢弃),这样做可以使得命令安静地执行,不产生任何屏幕输出。

综上所述,在 command >/dev/null 2>&1 这个命令中,> 将命令的输出(STDOUT)重定向到了 /dev/null,而 2>&1 则进一步将错误输出(STDERR)也重定向到与 STDOUT 相同的地方——即 /dev/null,这样命令执行的所有输出,不论是正常输出还是错误信息,都将被默默地丢弃。




 

0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1 
2:表示错误输出(stderr)


command >/dev/null 2>&1 &    )  ==    command 1>/dev/null 2>&1 &  ) 


1)command:表示shell命令或者为一个可执行程序
2)>:表示重定向到哪里 
3)/dev/null:表示Linux的空设备文件 
4)2:表示标准错误输出
5)&1:&表示等同于的意思,2>&1,表示2的输出重定向等于于1
6)&:表示后台执行,即这条指令执行在后台运行

 

1>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设
件。


这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。


来自  https://blog.csdn.net/sunrier/article/details/7695839

普通分类: