[转载] 1>&2怎么用

1>&2 是一个在类Unix系统(如Linux)的shell中使用的重定向指令。

在这个指令中:

  • 1 表示标准输出(stdout),即通常程序打印到屏幕上的输出。
  • 2 表示标准错误(stderr),即程序用来输出错误信息的地方。
  • >& 是一个重定向操作符,用于将一个文件描述符(在这里是标准输出)重定向到另一个文件描述符(在这里是标准错误)。

所以,1>&2 的意思是将标准输出(stdout)重定向到标准错误(stderr)。这在想要合并标准输出和标准错误流时很有用,以便它们可以一起被处理或查看。

这个指令通常与其他重定向管道指令结合使用,以实现更复杂的输出处理。例如,可以使用 command > file 2>&1 来将标准输出和标准错误都重定向到同一个文件中。

PS:

如果你要问,>& 中的 & 是什么意思?

>& 是这个特定操作的一部分,其中 > 表示重定向,而 & 表示后面跟的是另一个文件描述符,而不是一个文件名。所以,>& 是固定的

PPS:

如果你还想问,文件描述符是什么

文件描述符(File Descriptor,简称 FD)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件。所有执行 I/O 操作的系统调用都通过文件描述符完成。程序刚刚启动的时候,默认有三个文件描述符,分别是:

  • 0(stdin):标准输入,通常对应键盘的输入,也可以是其他输入设备或重定向自文件。
  • 1(stdout):标准输出,通常对应屏幕的输出,但也可以重定向到文件或其他设备。
  • 2(stderr):标准错误,用于输出错误信息,通常也对应屏幕的输出,但同样可以重定向。
有时候遇到的 /dev/null 什么意思?

/dev/null 是一个特殊的设备文件,在Unix和类Unix系统(如Linux)中,它被称为“空设备”或“空文件”。当向 /dev/null 写入数据时,数据会被丢弃,就像进入了一个黑洞。而从 /dev/null 读取数据则立即返回EOF(文件结束标记),因为它不包含任何数据。

举个例子:

tar -xvf ${SPARK_TAR} > /dev/null

> /dev/null 部分仅将标准输出(stdout)重定向到 /dev/null。这意味着所有写入标准输出的信息(在这个 tar 命令中,主要是被提取的文件名,因为使用了 v 选项)都会被丢弃,不会显示在终端上。

然而,这个重定向并不影响标准错误输出(stderr)。如果 tar 命令在执行过程中遇到错误,并且向 stderr 写入错误信息,那么这些错误信息仍然会显示在终端上。

如果你想同时抑制 stdoutstderr 的输出,你可以使用以下命令:

tar -xvf ${SPARK_TAR} > /dev/null 2>&1

这里,2>&1 表示将标准错误输出(文件描述符 2)重定向到标准输出(文件描述符 1)所指向的位置,也就是 /dev/null。这样,无论是 stdout 还是 stderr,所有的输出都会被丢弃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值