“/dev/null”在Shell命令末尾是什么意思?

38

以下命令有何区别?

ssh myhostname "command1; command2;...commandn;" 2>/dev/null
ssh myhostname "command1; command2;...commandn;" 
  1. 2> 是什么意思?

  2. /dev/null 是什么意思?我在某个地方读到说命令的结果将被写入文件 /dev/null 而不是控制台!这是正确的吗?对我来说,文件名为 null 好奇怪!


1
  1. man bash 是一篇有趣的阅读材料。
  2. /dev/null 是一个特殊的文件,它充当黑洞的作用;它不占用任何磁盘空间,因为放入其中的所有内容都会被丢弃。
- axiac
5个回答

55

2> 的意思是将“标准错误输出”重定向到给定的文件。

/dev/null 是空文件,任何写入其中的内容都会被丢弃。

它们合在一起的意思是“丢弃所有的错误信息”。


14

1代表标准输出(stdout),2代表标准错误(stderr)。

有时你会看到2>&1,这意味着将标准错误输出重定向到标准输出。


5
< p > /dev/null 实际上表示“被丢弃到虚空中”。你提到的2是指错误输出,应该将其定向到此处。


3

2> 表示将标准错误发送到某个地方

/dev/null 是一个垃圾桶


2
重定向不是管道。 - William Pursell

2

1) 将所有标准错误信息重定向到 /dev/null(忽略并不显示)

2) /dev/null 只是指向一个不存在的地方,将任何东西重定向到那里,它就会消失。


在 /dev/ 中还存储着其他东西,例如指向文件系统(设备,如 /dev/sda)的指针以及像 /dev/random 这样的东西,您可以从中读取随机数据。 - BrenanK
3
没有管道参与。重定向并不是管道。 - William Pursell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接