Linux 标准输入输出和错误输出重定向 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null

0    158    2

Tags:

👉 本文共约2259个字,系统预计阅读时间或需9分钟。

简介

Linux 输入输出重定向 :2>/dev/null>/dev/null 2>&12>&1>/dev/null

0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)

在 shell 脚本中经常会发现 >/dev/null 2>&1 这样的语句。

当执行 shell 命令时,会默认打开 3 个文件,每个文件有对应的文件描述符来方便我们使用:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
类型文件描述符默认情况对应文件句柄位置
标准输入(standard input)0从键盘获得输入/proc/slef/fd/0
标准输出(standard output)1输出到屏幕(即控制台)/proc/slef/fd/1
错误输出(error output)2输出到屏幕(即控制台)/proc/slef/fd/2

所以在执行 shell 命令时,默认是从键盘获得输入,并且将结果输出到控制台上。但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向。比如我们将 1 指向文件,那么标准的输出就会输出到文件中。

/dev/null 代表 linux 的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称 "黑洞"

/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。

  1. 2>/dev/null 意思就是把错误输出到 "黑洞"
  2. >/dev/null 2>&1 默认情况是 1,也就是等同于 1>/dev/null 2>&1 ,就是把标准输出重定向到 "黑洞", 还把错误输出 2 重定向到标准输出 1 ,即 标准输出和错误输出都进了“黑洞”
  3. 2>&1 >/dev/null 意思就是把错误输出 2 重定向到标准输出 1 中也就是屏幕,标准输出进了 " 黑洞 "。整个意思:也就是标准输出进了黑洞,错误输出打印到屏幕

/dev/null详解

在 Linux 系统中,/dev/null 是一个特殊的文件,它被称为“空设备”。它没有任何数据,读取它永远不会产生任何输出,写入它永远不会导致任何数据被存储。/dev/null 起着丢弃数据的作用,可以用于一些需要忽略输出或者输入的场合。

在本文中,我们将会深入了解 /dev/null 文件,它的作用以及如何在 Linux 中使用它。

/dev/null 的作用

在 Linux 系统中,/dev/null 是一个特殊的文件,用于将数据彻底丢弃。它是一个特殊的文件设备,可以通过标准输入和标准输出访问。读取 /dev/null 将会立即返回 EOF(文件结束符),而向它写入任何数据将会直接被忽略掉,从而丢弃数据。

因为 /dev/null 丢弃所有数据,所以它通常用于一些需要忽略输出或者输入的场合。例如,如果你正在运行一个命令,但是你不想看到输出,你可以将输出重定向到 /dev/null。类似的,如果你需要一个空的输入流来执行一个命令,你可以将输入重定向到 /dev/null。

如何使用 /dev/null

重定向输出

使用 /dev/null 可以轻松地禁止输出,将输出重定向到 /dev/null 即可。例如,以下命令将不会在屏幕上打印任何输出:

在这个例子中,输出被重定向到 /dev/null,因此不会在屏幕上打印任何输出。

禁止输出和错误

如果你希望同时禁止输出和错误输出,你可以将标准输出和标准错误输出都重定向到 /dev/null。例如,以下命令将不会输出任何内容,即使命令本身存在错误:

在这个例子中,标准输出和标准错误输出都被重定向到 /dev/null。因此,即使命令本身存在错误,也不会在屏幕上显示任何输出。

禁止输入

类似地,你也可以使用 /dev/null 来禁止输入。例如,以下命令将不会等待任何输入,而是立即退出:

在这个例子中,/dev/null 被用作输入流,因此该命令不会等待任何输入,而是立即退出。

关于 ”&” 的作用

这里的 & 没有固定的意思

我们可以这么理解 2>/dev/null 重定向到文件,那么 2>&1,这里如果去掉了&就是把错误输出给了文件1了,用了&是表明 1 是标准输出。

参考

https://blog.csdn.net/freeking101/article/details/81212207

https://mp.weixin.qq.com/s/wL-kX27u3cUybMzVIiuHEw

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部