Linux命令 黑洞>/dev/null和2>&1

2024-02-19 19:50:57 浏览数 (2)

linux命令中的>/dev/null黑洞

Linux中的标准输入输出

代码语言:javascript复制
0是标准输入,一般是从键盘获得输入
1是标准输出,一般是输出到屏幕上
2是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了
>是重定向符号

>/dev/null

  1. >/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃,俗称“黑洞”
  2. 2>/dev/null意思是把错误输出到黑洞,也就是说如果你的命令出错的话,错误报告直接就删除了,不会显示在屏幕上

实例

  1. 如果出现这种有很多报错的情况,可以使用2>/dev/null这个选项将错误信息重定向到黑洞中,只留下正确的信息回显,这个时候我们就能快速而精确的找到我们需要的文件了

2>&1

含义

  1. 将标准错误输出重定向到标准输出
  2. 符号>&是一个整体,不可分开

2>&1和2>1的区别

  1. 符号>&是一个整体
  2. 2>1的写法实际上是将标准错误输出重定向到名为”1“的文件中去了,没有1这个文件,而不是1所代表的标准输出
  3. 写成2&>1也是不可以的

为什么2>&1要放在后面

可以将1和2都理解为一个指针

代码语言:javascript复制
本来1----->屏幕 (1指向屏幕)
执行>log后, 1----->log (1指向log)
执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

>和>>的区别

  1. >是重定向文件,覆盖文件原有的内容
  2. >>是重定向文件时,以追加的方式写入文件

0 人点赞